Commodore
COMPUTER
CLUB
Presenta
m
programmi
perii
Commodore
m
Anno 1 - N. 1 - Luglio 1984 - Distr. MePe
Gloriano Rossi • Marco Moccarelli
64
programmi
perii
Commodore
64
SOMMARIO
0. Presentazione 5
1. Giochi e passatempi 7
Testa o croce 7
Tiro di dadi 8
Lancio 4 dadi 1 1
Lui e lei 9
3 carte 1 3
Test memoria 1 5
Generatore di labirinti 17
Decide computer 19
Crea un quiz 21
Nim 23
Bioritmi 27
2. Grafica 32
Parallelepipedo 32
Demo grafica 34
Prova schermo 36
Istogrammi 37
Pallina 40
Grafica 42
Nevicata 45
Bozzetti 46
Life (cellula) 48
Topolino 52
Autolab 54
3. Gestione delle stringhe 56
Divisione in sillabe 56
Invertitore di parole 58
Parola d’ordine multipla 59
Risultati in cornice 61
Messaggio segreto 63
Ordinamento alfabetico 65
Striscia scorrevole 67
4. Musica 68
Beep 68
Piano 69
5. Numeri 72
Numeri casuali: distribuzione 72
Min/max fra numeri casuali 74
Numeri casuali: media 76
Numero medio di una serie 77
Dal precedente al decimale 78
Percentuali 80
Invertitore di numeri 81
Scarta l’intero 82
Arrotondamenti 83
Arrotondamento a 2 cifre 85
Deviazione standard 86
Funzioni logiche 87
Integrali 88
Sistemi lineari 90
Simulatore di calcolatrice RPN 93
Divisione in fattori 95
Da esadecimale in decimale 96
Numeri caratteri 98
T rova il numero 90
6. Gestionali 1 01
Aumento del valore monetario 101
Differenza fra due date 1 03
Giorno della settimana 1 05
Comparazione di introiti 1 07
Conta pezzi 1 09
Inventario 110
Ore salari 113
Al penny 4- vicino 114
Pagamento automobile 116
Identificazione alfabetica 118
Classificazione 119
Pubblicità: costo per unità di vento 1 22
Statistiche in base 1 000 123
7. Sorpresa 1 24
? ? ? 124
* *
0. Presentazione
* *
Perchè 64 programmi
per il Commodore 64?
Perche' 64 programmi per il Commodore 64
Questo libro non vuole essere il meglio delle routinea
o dei programmi per il Commodre 64 , ma una piccola
raccolta di listati che possono essere utili sia al
principiante che da chi e' già da tempo possessore di
C64 .
E' un libro dedicato a chi vuole capire con piccoli e
semplici esempi tutti in linguaggio BASIC, il proprio
computer .
Un insieme, quindi, di programmi sia dilettevoli che
didattici .
Per semplificare la lettura dei programmi abbiamo
utilizzato un programma appositamente studiato che
lista le istruzioni in modo tale che quei caratteri di
controllo cursore, di colore o di attributi di
stringa, siano espressi in maniera chiara e
innanzitutto leggibile.
Troverete infatti ad esempio che il comando di
cancellazione schermo, espresso graficamente con un
cuoricino in negativo, viene scritto nel listato con
CCLR3 .
Nel,La tabellina che segue sono riportati tutti i
simboli di controllo con la loro interpretazione posta
fra parentesi quadre. Quindi ogni volta che appare un
messaggio in parentesi quadra deve intendersi quale
5
comando da digitare in maniera opportuna, come
daltronde e' aufficentemente spiegato nel manuale del
vostro computer.
Cosi' se troverete ad esempio C3 DOWN 3 , dovrete
premere per tre volte il tasto di cursore in giu'
<CRSR> .
Vi augurano buon lavoro e buon divertimento gli autori
Gloriano Rossi
e
Marco Moccarelli
6
★ *
1. Giochi e passatempi
* *
Testa o croce
Questo simpatico programma permette di
trovare una soluzione ai dubbi con il
classico sistema del "testa o croce".
Scrivi il programma.
Fallo girare.
Sara' proprio il tuo Commodore che scriverà'
TESTA o CROCE dopo ogni lancio.
Per un nuovo lancio, premi il tasto RETURN.
La linea 10 pulisce lo schermo.
Le linee 20 e 30 generano un numero casuale
(0 oppure Dea seconda dell'esito / scrivono
"testa" o "croce".
Le linee 50, 60 e 70 permettono l'iterazióne
del programma tramite il tasto RETURN.
1 0 PR I NT " t CLERR 3 " : REM PUL I Z I fi SCHERMO
29 Q=RND < ~T I >
38 IF aNT<2#<RND<l>>)Xl THEN PRIMI "TE
STfi" : GOTO 50
40 FRI NT "CROCE"
50 PRIMI- PRIMI: PRIMI
60 PR I MT " R I TEMI fi SARAI PIU' FORTUNATO !
70 INPUT "PREMI RETURN" ; K$
80 CLR
90 GOTO 10
7
Tiro di dati
Ecco un semplice sistema per lanciare due
dadi e mostrarne i risultati.
Le linee 20-30 trovano un numero casuale tra
1 e 6 e lo associano ad A.
Le linee 50-60 fanno lo stesso per il secondo
dado <B) .
Le linee 70-80 scrivono i risultati insieme
ad un messaggio esplicativo.
1 0 PR I NT " [ CLEflR 3 " •' REM PUL I ZI fl SCHERMO
20 Q=RND <. -T I >
30 A= I NT < 7#RND < 1 > >
40 IF Ad THEN 30
50 B= I NT < 7#RHB < 1 > >
60 IF B<1 THEN 50
70 FRI NT" PRIMO DRUO" ; h
80 FRI NT" SECONDO DADO" ; B
30 FOR L~1 TO 1 8 ; PR I NT : NEXTL
100 PRI NT "UN" ALTRO LANCIO DEI DADI ?"
110 INPUT "PREMI RETURN" ; K*
120 CLR
130 GOTO 10
8
Lancio 4 dadi
Due dadi non ti bastavano?
Ecco come averne quattro per ogni lancio!
Naturalmente, questo programma lavora
esattamente come il precedente, tranne che il
comando FOR/NEXT nelle linee 60-150 fa
ripetere al computer la fase di generazione e
scrittura dei lanci. Se hai bisogno di sei,
otto o dieci lanci, non devi far altro che
sostituire al numero due nella linea 60 il
numero tre, quattro o cinque.
10
F'R I NT " [ CLEfìR 3 " : R
EM P
ULIZIR S
CHERMO
20
Q=RNB < -T I >
30
PRINT" LANCI Fi DUE
DADI
li
40
INPUT "PREMI REI
URN";
K$ : PRINT
: PRINT
50
PEI NT" CCLEARJ " : R
EM F
ULIZIR S
CHERMO
60
POR L.~~ 1 TO 2
70
DL~ I NT < 7$END < 1 > >
80
IF DLC 1 THEN 70
90
DR= I NT < 7# RND < 1 > >
1 00
IF DR< 1 THEN 30
110
PRINT"*********"
120
PRINT"*" ;dl; "*";
dr; "*
II
130
PRINT"*********"
140
PRINT PRINT
9
150 MEKTL.
160 PRINT •' CLR : GOTO 30
io
Lui e lei
Questo divertente gioco di società' usava
solitamente come supporto dei fogli di carta
su cui ogni giocatore scriveva segretamente
la propria risposta, e la continua rotazione
di foglietti da un giocatore al vicino ad
ogni nuova domanda, provocava una combina-
zione di esilaranti "storielle".
Questa volta il supporto vi verrà' fornito
dalla generosa memoria del vostro 64.
Al gioco possono prendere parte fino a 10
giocatori .
10
s$a>
-"12
DOWN 3 CR*.
■'S3CHI E
LUI
II
2@
S$ <. 2 >
= "C2
DONNI C R'
'S 3 CH I E
-■ LEI
II
30
S'J : ( 3 )
= " f. 2
DOWN 3 i R'-
■'S 3 DOVE
SONO "
40
S$ < 4 >
= " C2
DOWN 3 L R‘-
•’S 3 COSA
S TANE-
0 FACE
NDO"
50
S$<5)
•- n r
DOWN 3 C R ■
-’S 3 COSA
DI CE
LUI
A
LEI"
60
S$<6)
= "C2
DOWN 3 C RV
/S 3 COSA
DICE
LEI
A
LUI"
70
S$<7)
= " C2
DOWN 3 C R‘-
/S 3 COSA
DICE
LA
GEN
TE DI
lori:
j"
80
S'f ( 8 >
= " C 2
DOWN 3 CR'-
/S 3 COSA
FACEV
'ANO
PR
IMA DI CONOSCERSI"
il
90 S$<9>="[2 B0WNHRVS3CHE LAVORO Ffl LU
I"
100 Sl(10)="[2 DOWN 3 C R VS 3 CHE ATTIVITÀ-' S
VOLGE LEI"
1 20 PR I NT " C CLEAR 3 [ 5 DOWN JC? RI GHT 3 QUfiNT I
G I OCATOR I ( MAX . 1 0 > " : I NPUT G
125 IF G< 1 OR G> 1 0 THEN PRINT"C2 UP3" =GO
TO 120
130 FOR W=1 TO G
140 FOR T=1 TO IO
1 50 PR I NT " C CLEAR I " S* < T >
1 60 I NPUT " [ DOWN 3 " ; H$ < T , W >
170 NENTT
175 IF WOG THEN PRINT" [ CLEAR K 2 DOWN] H
fi I F I N I TO ! " : PR I NT " C DOWN 3 TOCCA AL PRO
SS IMO GIOCATORE! " : GOTO 180
1 77 PR I NT " C CLEAR 3 C DOWN 3 C RVS 3 0!< ! [ 2 DOWN 3 A
TTENDETE ! " '• FOR 1 = 1 TO 5000 NCXT
180 FOR 1=1 TO 5000 ; NEXT I : NEXTW
1 90 D= I NT < G/2 ) : PR I NT " C CLEAR 3 "
200 FOR K=1 TO 10
2 1 0 PR I NTST < !< > : PR I NT " l DOWN 3 " AT < l< , D >
220 D=D+1 : IF D=G+1 THEN D=1
230 FOR 1=1 TO 5000 : NEXT
240 NEXTK
250 IF D® I NT (. G/2 > THEN END
254 PRINT "SPREMERE UN TASTO***"
255 GET Z$ : IF Zt="" THEN 255
260 GOTO 200
12
3 carte
Un antico gioco arabo basato sulla velocita'
e sull'abilità' del prestidigiatore consi-
steva nel mescolare tre carte disposto a dor-
so in su sopra un tavolo e di far acommetere
a qualche sprovveduto passante quale fosse
l'asse di cuori.
Vi viene qui riproposto lo stesso gioco av-
vincente, nel quale pero' il vostro avver-
sario non sara' la mano veloce di un arabo ma
la sorte che casualmente assegnerà' la posi-
zione dall'asso di
cuori •
i
P~0
5
“7.*- n • ■> n
c~ •+
:X$="?" : V
$= ,, ? n
10
GQSUE
1 008 : UUSl
B 1 030
20
f-rnb <
1 > #6+ 1
25
IF F>6
THEN F';‘~
6
30
IF F>8
PINE F<2
THEN 35
31
IF F>2
AND F<4
THEN 36
òùd
IF F>4
AND F<6
THEN 37
•~i r.r
O •-*
2i="#"
: "*P" : X
■$= " * " : C= 1 •' GOTO 40
36
: :X
■$-- : l>3 : GOTO 40
•"» r
Z$= : " + "
: '?'■$="*" ■ X
$="*" : 02 : GOTO 40
40
GQSUE
1 000
45 FGR G==l IO 2808 : NEXTG
13
50 F'R I NT " C CLERR 3 [ 3 DOWN] C 2 RI GHT 3 HAI FU
NTATO SU" ;J
55 IF C-J THEN 70
60 IF COJ THEN 80
70 PR I NT " C 3 DOWN ]C3 RI GHT 3 HR I V I NTO ! " • P
--P+ 1 0900 : GOTO 90
80 PR I NT “ C 3 DOWN 3 1 3 R I GHT 3 Hft I PERSO ! " ■ P
=0- 1 0000
90 PR I NT " C DOWN 3 SE I R QUOTA "P" LIRE"
100 INPUT " C 3 DOWN 3 C 3 RI GHT 3 ANCORA " ; E*
110 IF LEFTT<ET, 1><> "S" THEN 100
117 PR I NT " C 3 DOWN 3 C 3 RIGHTKRVSK PREMI
UN TASTO > C RVOFF 3 "
120 GET W$=IF Wt="" THEN 120
1 30 GOTO 5
140 END
175 PR I NT " C DOWN 3 SE T R QUOTA "P" LIRE"
1 800 PR I NT " [ CLERR 3 C 3 DOWN 3 " ; T AB < 4 > " C RVS 3
1 [ RVOFF 3 " ; TREK 1 1 > " [ RVS 3 2 C RVOFF 3 " ; T
RE < 1 8 > " C RVS 3 3 C RVOFF 3 "
1 0 1 0 PR I NT " [ DOWN 3 C 2 R I GHT 3 [ 2 R I GHT 3 «
1020 SÌ="CRIGHT3 I ~ I ! Il I "
1021 FOR 1=1 TO 5 : PRINTST : NEXTI
1025 FRI NT" I "Zf" I ! "V$" I I "X$”
! "
1026 FOR 1=1 TO 5 : PRINTST : NEXT
1027 PRINT" C2 RI GHT 3 [2 RI GHT 3 C2
RI GHT 3 “ "
1029 RETURN
1030 PRINT" C DOWN 3 DOVE E" L'ASSO DI CUORI?
il
1040 INPUT J
1045 IF ,K1 OR J>3 THEN PRINT" C2 UF*3" -G0T
0 1 040
1050 RETURN
14
Test memoria
Questo simpatico programma metterà' a dura
prova la vostra memoria t !
Il computer vi mostrerà' un numero per brevi
istanti dopodiché' vi chiederà' di ripeterlo.
Se per 3 volte sbaglierete vi verrà'
visualizzato un messaggio.
Diversamente vi verrà' proposto un altro
numero.
10
PR I NT " t CLEfìR ] C TF8 3
" •• CLP
26
Q=RHD <! ~ T I >
1 ù., J.
30
S=1000*RND
( 1 >
40
H= I NT < S*2 >
50
FRI HI" RI CO
RIifiT I —
\«» • k!
.< i •;
60
IF W=3 THE
M PRIMI"
DIMENTICALO! ": GOTO
1 40
70
POR T-l IO
1000 : ME
XI
80
FRI NT" ECLE
RR 3 "
90
INPUT "CHE
NUMERO
ERR";S
1 00
IF SOM THEN PRIMI
" ***HR I SBAGLIATO*
**" : W*W+1 •
3010 60
1 10
PRINT"***E
SFITTO***
" :R=R+1 2=2+10
120
FRINIR; "IEMTRTIVO"
125
POR 1=1. TO
1 000 : HE
XI
130
PRIMT : GOTO
30
15
Generatore di labirinti
Il computer riempirà' il vostro schermo con
un labirinto generato da valori casuali.
Lo studio di questo programma potrà' esservi
utile per la futura creazione di giochi a
percorso.
10 REM
20 REM # *
30 REM # GENERATORE DI LABIRINTI #
40 REM # *
60 REM * «
70 REM * ADATTAMENTO PER IL CBM/64 *
80 REM # *
90 REM
95 PQKE 53280. 14: POKE 53281 . 4 : PRINTCHR$
<5) ; CHR»<8) ; CHR#( 142) . CHR*C 147) : REM
SFONDO
100 DIM A (3 ): REM PREPARA LA TABELLA DEL
LE DIREZIONI
1 10 A<0)*2 : A< 1 )“-80 : A<2)=-2 = A<3)*60 = REM
VALORI PER SCHERMO A 40 COLONNE
120 WL* 1 60 : HL®32 : SC* 1 024 : A*SC+8 1 : REM
VALORI PER CBM/64
140 FOR 1*1 TO 23
150 PRINTCHR»<18);
17
133 FQR W-l TO 39
155 PRINTCHR*<32>;
137 NEXTW=PRINT
160 NEXTI
200 REM GENERA IL LABIRINTO
210 POKE fi, 4
220 J*INT(RNDa>#4):X*J
230 = IF PEEKCB)»WL THEN POKE B,J
• POKE A4fK J)/2> HL : A*B : GOTO 220
240 J«<J+l)*-(J<3>:iF JOX THEN 230
250 J«PEEKCR> ; POKE H/HL : IF J<4 THEN A*A-
A< J) : GOTO 220
300 REM LABIRINTO PRONTO! = ASPETTA CHE
VENGA PREMUTO UN TASTO
310 GET C# : IF C*« ,,M THEN 310
1000 REM ATTRAVERSAMENTO DEL LABIRINTO
VERSIONE CBM64
1010 POKE A/81 : J e 2
1020 B*A+AU>X2:iF PEEK<B)*HL THEN POKE B
, 81 : POKE A, HL : A-B : JcC J+2)+4#< J>1 )
1030 J*<J-1>~4#<J*0):GOTO 1020
18
Decide computer
Ti ricordi il programma che diade tanta
popolarità' al computer?
Ora la potenza del calcolatore Commodore 64
rende poaaibile una versione migliorata di
quel programma.
In questa edizione e' possibile una scelta
tra otto alternative.
Dopo ogni esecuzione il computer attende che
tu prema un qualsiasi tasto per ricominciare.
10 DATA LASCI fi PERDERE
20 Dfìrfì accetta L'affare
30 DATA SI !
40 DATA FORSE...
50 DATA E'’ MEGLIO CHE RIORDINI LE TUE
IDEE
£.0 DATA SOPRASSIEDI
70 DATA NO ! ! !
80 DATA OGGI NON USCIRE DI CASA
90 Q=RND (-TI )
100 PRINT" CCLEAR] "
110 M=INT<3*RND<1>>
120 IF NC1 THEN 110
13© FOR L=1 TO N
140 READ fi$
1 »
150
NEXT
L
160
PRINTfl*
170
GET y
(.$
180
IF K*
P* ,,M THEN 170
190
RESTORE
200
GOTO
1 00
Crea un quiz
Uno degli usi piu' affascinanti per il vostro
computer e' impiegarlo per comunicazioni
visive di carattere istruttivo, educativo o
semplicemente divertente.
Un utile modo di avviare queste conversazioni
può' essere un quiz come quello qui
presentato.
I dati del quiz (la "conoscenza” del
computer) sono nelle linee 20—70.
Fai attenzione alle virgole e agli spazi che
devono essere riprodotti correttamente quando
trascrivi il programma.
Le righe 90 e 100 generano un numero casuale
fra 1 e 11.
La riga 110 seleziona la riga nei DATA per' la
domanda .
Le linee 120-140 prendono l'esatto numerale
dalla linea DATA -selezionata .
Le linee 160-18Q scrivono la domanda del quiz
sullo schermo, mentre la 190 legge nei DATA
la risposta esatta.
Tu fornisci la risposta che viene confrontata
con quella esatta (220-240) .
Naturalmente il quiz può' essere ampliato.
Infatti in questo esempio, aggiungendo nuovi
presidenti, in nuove linee DATA si aggiungono
possibilità' di gioco.
21
10 F'RIHT" CCLERR] "
29 DATA PRIMO, GEORGE WASHINGTON
30 DATA SECONDO, JOHN ADAMS
40 DATA TERZO, THOMAS JEFFERSON
5@ DATA QUARTO, JAMES MADISON
60 DATA QUINTO, JAMES MONRQE
70 DATA SESTO, JOHN QUINCV ADAMS
75 PRI NT "QUANTI"
80 PRI NT "PRESI DENTI AMERICANI
85 PRI NT "SAPRESTI ELENCARE?"
90 R= I NT < 1 2#RND ( 1 ) >
100 IF R< 1 THEN 90
110 IF INTCR/2>=R/2 THEN R=R+1
120 FOR L=1 TO R
130 READ S$
140 NEXTL
150 PRI NT : PRI NT
160 PRI NT "CHI FU IL "
170 PRINTS*.: " PRESIDENTE"
180 PRI NT "DEGLI STATI UNITI?"
190 READ C$
200 INPUT D*
210 FOR L=1 TO 3 : PRI NT : NEXTL
220 IF D$=C$ THEN PR I NT" ESATTO ! " : GOTO 24
0
230 PRI NT "SBAGLIATO!"
240 PR I NT "IL " S$
250 PRI NT "PRESI DENTE FU"
260 PRINTCf
270 RESTORE
280 PRI NT : PRI NT
290 GOTO 90
22
Nim
Questo antico gioco cinese viene qui
riproposto fedelmente, fornendovi pero' un
avversario praticamente imbattibile.
A turno dovrete togliere da una sola fila per
volta quanti fiammiferi vorrete.
Vince chi lascia all'avversario l'ultimo
fiammifero da togliere.
20 CLR : PR I NT " [ CLEAR ] C NERO D " ; POKE 53280
, 8 : PQKE 53281/8
30 PRINT TABU4)" GIOCO DEL NIM"
40 FOR K=1 TO 40 = PRINT"-" ; .NEXTK
50 PRINT "DI SPORREMO DEI FIAMMIFERI SU 3
RIGHE, "
70 PRINT "CIASCUNO DI NOI POTRÀ" TOGLIER
E"
80 PRINT "QUANTI FIAMMIFERI VUOLE/ MA DA
UNA"
90 PRINT "SOLA RIGA . VINCERÀ" CHI TOGLI
ERA" "
95 PR I NT " L " IJLT I MO FIAMMIFERO."
100 FOR K=1 TO 40 : PRINT"-" J -NEXTK
105 FOR K=1 TO 3
110 PRINT "QUANTI FIAMMIFERI SULLA"K"" RI
GA? ";
23
128 GET flf(K) : IF A$<K)=" " THEN 120
130 AOO«VAL<A#<K)>
140 IF fì(KK s 0 THEN 120
145 PRINTA$<K> : PRINT : NEXTK
155 G03UB 1000
160 PR I NT " OK - VUOI INIZIRRE PER PRIMO ?
Il •
170 GET R$ : IF R? 55 " " THEN 170
175 PRINTR*
180 IF R$="S" THEN 250
190 IF R$»"N" THEN 210
200 GOTO 170
210 REM MUOVE IL COMPUTER
220 PRI NT "POSSO MUOVERE ? "j
230 GET R$ : IF R*0"S" THEN 230
235 PRINTRt
240 GOSUB 3000
250 REM MUOVE IL GIOCATORE
260 PRI NT "VUOI TOGLIERE DALLA RIGA 1,2 0
3 ? M j5
270 GET R«:iF R$*"" THEN 270
275 R«VAL(R$)
290 IF R<1 OR R>3 THEN 270
295 PRINTR#
310 PRI NT " QUANTI FIAMMIFERI ?"
320 GET R$:iF R$="" THEN' 320
322 IF VRL<R$)*0 THEN 320
325 PRINTR*
330 IF ACR)-VAL<R$K0 THEN GOSUB 1000 :GO
TO 260
340 ACR)*A(R>-VALCR$)
350 GOSUB 4000
360 IF M«0 THEN PRI NT "HAI VINTO TU !":QO
TO 500
370 GOSUB 1000
380 GOTO 210
24
500 REM RICHIESTA DI PROSEGUIMENTO
510 PRINT "VUOI GIOCARE ANCORA ?"
520 GET R$ ; IF R*«" M THEN 520
530 IF R$»"S" THEN 1
540 PRINT "CIRO ! " : END
1000 REM STAMPA TABELLONE
1010 PRINTCHRf <147>
1015 FOR K*1 TO 3
1017 PRINTK"'RIGA";
1020 IF A<K)*0GOTO 1040
1030 FOR J=1 TO R<K)
1035 PRINT TAB< 15) " I
1038 NEXTJ
1040 PRINT: print : NEXTK
1050 FOR K*1 TO 40
1055 PRINT"-";
1058 NEXTK= RETURN
2000 REM ANALISI SICUREZZA DELLA MOSSA
2010 F*0:FOR K»1 TO 3= FOR J“0 TO BCK)
2015 READ B$0O : NEXTJ : RESTORE : NEXTK
2020 FOR K*1 TO 4 = S*0
2030 BBf OO*"0"+MID$<Bf < 1 ) , K> 1 >+MID$<B*<2
),K,1>
2035 BB$CK>=BB$<K)+MID$<Bf(3>,K, O
2040 READ C S
2050 IF BB*<IO=C# THEN RESTORE =GOTO 2070
2060 GOTO 2040
2070 FOR J*1 TO 4':S<J>*VAL<MID$<C$, J, 1>)
2075 S*S+S<J): NEXTJ
2080 IF S-0 OR S*2 OR S«4 OR S*6 THEN 209
0
2085 IF S»8 OR S»10 OR S«12 THEN 2090
2088 F*i: RETURN
2090 NEXTK :F*0: RETURN
3000 REM DECISIONE E MOSSA
3010 FOR K*1 TO 3 : B(K)*A(K) : NEXTK
25
3020 Y«1
3030 IF B(Y>®0 THEN B<Y)»RCY) : GOTO 3050
3040 BC Y)-B< Y)-l : GOSUB 2000
3042 IF FO0 THEN 3030
3045 FOR K«1 TO 3 = AOO=BOO :NEXTK
3048 GOTO 3110
3050 IF Y*3 THEN 3070
3060 Y*Y+1 : GOTO 3030
3070 GOSUB 4000
3090 X* I NT < M#RND < 1 ) + 1 )
3100 ACW)*M-X
3110 GOSUB 1000
3115 GOSUB 4000
3120 IF MO0 THEN RETURN
3130 FRI NT " HO VINTO IO! " : GOTO 500
4000 REM RICERCA NUM. MAX PER RIGA
4005 M»0:N«0
4010 FOR H«1 TO 3
4015 IF RCH»M THEN M*A<H):W«H
4020 NEXTH
4030 RETURN
4050 REM :NUM MRX»M, SULLA RIGA W
5000 DATA 0000,0001,0010,0011,0100,0101,0
110,0111
5010 DATA 1000,1001,1010,1011,1100,1101,1
110,1111
31130 PRINT“HQ VINTO IO !":GOTQ 500
28
Bioritmi
Un utile programma per conoacere il vostro
attuale stato di salute fisico, psicologico e
mentale .
I bioritmi sono tre cicli sinusoidali
rispettivamente di 23, 28 e 33 giorn-i
riguardanti il primo lo stato fisico di un
individuo, il secondo lo stato emotivo e
l'ultimo quello intellettivo.
Ogni volta che una curva attraversa l'asse
delle ascisse dall' alto verso il basso si ha
un calo della propria potenziàlita' .
II programma prevede inoltre il confronto
della compatibilita' di diversi bioritmi.
1 POKE 53280 , 3 ■ POKE 5328 1 , 3 : PR I NT " C CLE
RE 3"
1 60 D I M fi < 1 2 > > X < 3 > .. J < 3 > , CD < 3 .• 2 > .• R < 3 > .. S ( 3
) : POR I “ 1 TU 1 2 : EEfiD fi < I } : NERI DEF r F
H V < ! > ”28™ < I /4= I NT < I /4 > >
1 02 P < 1 > = 1 6 : P < 2 > =5 : P < 3 > =3 : GEHFEEMfiRfi
PRMfiGG I ULUGfìGOSETO "! THOVD I C " : W$™ " LMMG
VSD "
108 Spl=" " : F$=" CROME
3 C22 DOWN 3
1 1 0 DEE FHP < I > = 1 823™ I NT <1 + 11. 5 > *40+ 1 NT < <
27
Q+1V2)
1
26
BEF pus j ~g*S r h «:; < 7/
I - 1 NT < T
/r>
) #2# IT )
1
56
PR I NT " [ HOME ] " ; : GOSUB
9070 : P
RIN
TFT ; : G
OSUB 9070
1
57
PR J HTF$ " r 2 UP 31 VERDE
1 TSTP! \ ?
I OH
I ?"; :
GOSUB 9060 ■ IF
THEN 2
Qfi
1
68
PR I MI " L CLEfìR 3 [ ELEO 3 C
2 DOWN 3
INT
RODUCI
COSI 'I rifili • C2 DOWN
1 f Pficgp
3 ME
SE/GIO
/ANNO
1
rr
> J
PR I NT " [ 2 DOWN 3 I ROSSO
3(8/13/
57 C
BLEU 3 =
AGO 1 3 .• 1 957 > " •’ PR I NT M
13 DOWN
] [ v
I0LR3U
SfìRE LE BARRE ! "
1
o * - ~i
GOSUB 9O50 ; PR I NT " [ GL
ERR 3 C DO
WH 3
[MIN-M
RI ITT L* #!
!
-, -r\*
1
85
PR I NT H r ROSSO ] C 2 DOWN
3P1 CBLE
IJ3
.-■UOVO
QUADRO" : FRI NT" [DOWN.]
[ROSSO 3
F7C
BLEU 3
♦TfiMPo filtri 20 di "
1
86
PR I NT" C DOWN] CROSSO 3-
[ BLEU 3
Gl
ORNI C
R ITI CI" • PR I NT " [ DOWN .1
[ROSSO 3
# [ B
LEU 3
ESCI " : PRINT" [DOWN 3 [
ROSSO 3-
IBL
EU 3 -0
NFRONTfl" : GOSUB 9050
1
9 y
POKE 53281,7
ci
00
PR I NT " C m I USC . 3 C CLEFl
R 3 [ DOWN 3 [ BLELJ 3 ST
RMPR DR" : PRINT" (ME/D
I/RNHL
EFT3CUP3"
; : GOSUB 1 000 : 1 F 1 1 ~@
THEN 2
00
10
M 1 = 11 : D 1 : = 1 2 : V 1 = 1 3 : DO
-DI : POR
I =
1 TO M
1 "1 : D0=D0+fì( I > : NE/T
15
D3=V 1 #365+00 : POR I ~ 1
TO VI-
1 D
3=037 (
I /4= I NT < I /4 > > : NE/T
•li.
20
PRINT" C HOME] C 5 DOWN 3
[BLEU3NRSC
ITR "
I : GOSUB 1 000 • IF 11=0
THEN 2
20
d
25
M -= 1 1 : POR 1 = 1 TO M-l:
I 2= I 2+fi
T >
: NE/T :
GOSUB 800 : D= 1 2 : V= 1 3
iiì!
70
PRINT" C DOWN 3 CONFRONTO?" : GOS
1 IO
•J.L»
906 U • h!
28
280
290
300
400
500
501
510
600
6 1 0
615
f-,
618
619
620
"0 : 13=0 : IF I$="N" THEH 300
R~ 1 : PR I NT " Z HOME ] Z 9 DOWN 3 HflSC I Tfl 2 " ;
: GOSUB 1000: IF 11=0 THEH 280
POR I = 1 IO 1 1 - 1 : 1 2= 1 2+fl < I > : NEXT : T3=T
: GOSUB 800 : GOSUB 820
IP x<0 OR T3<0 THEH PRIHT" [RVS3SI CO
HTfl DflLL.fi TUR " : PR INT" [RVS 3 NASCI Tfl " "
GOSUB 1030 ; GOTO 200
PR I NT" Z CLEfìR 3 Z 2 DOWN 3 Z ROSSO 3 fl " M I DT <
m , 3 : +:M ì -2 .• 3 > D 1 " .. " V 1 + 1 900 : PR I NT " Z DOWN
3 Hfì I V I SSUTO PER BEN " : FRI NT " C L.EFT 3 !I D
OWN3 "T" Gl ORNI ~
GOSUB 9050 : POKE 36379 , 8 : PR I HT " [ CLERR
3 [ R2ZUR 3 " LEFTT < FT .. 9 > : POR I = 1 TO 20 : P
R I NT " !I NERO 3 [ flZZUR 3 " ; : NERI’ I
PR I HTLEFTT < Ff .• 1 9 ) " t NERO 3 Z RVS 3 " SPT : T2
=M1
PR T HT! FFTf ( Ff , 1 9 ':> " !' NFRfs 1 !" R'..'S 1 11 M T rii- r' M
$ , 3*M 1~2 , 3 > V 1 + 1 900 " r; RVÓFF 3 " J : PR I NTLE
FT$<F$,20>;
POR I ~ 1 TO 3 : J (l ') =0 ' R < I > =0 : POR J«=0 T
0 2 : CD < I , J > ”0 : NEXTJ , I : POR Q= 1 TO 40 :
IF Q/2= I NT <: Q/2 ) THEH 618
É=D3~ 1 : E= I NT < ?* < E/7 1 HT < E/7 ) ) + . 5 > + 1 :
E T=M I D$ ( STRT < D 1 > .. 2 )
PR I NT " Z BLEU 3 1 RVS 3 " M I M < W$ , E , 1 > " Z RVOF
F 3 Z DOWN 3 C LEFT 3 " LEFTT < ET , 1 > " Z DOWN 3 " ; :
I P LEH < ET > > 1 THEH PR I HT " Z LEFT 3 " R I GHT
fr; ET., 1. ) ;
PRINT"C2 UP 3 " ;
POKE 36878, 9 : POR 1=1 TO 3 : K=FNS< 18+1
#5> : GOSUB 820 : R< I >
' T
H >■. FNS '• 1 8+ 1 #5 > > > *2 . 5 : GOSUB 820
IF X< . 6 ' AND " X>~ . 6 THEH " CD < ì 7 J ( I > ) =M 1
#100+01 :J(I)=J(I)+1
Z=PEEK < FNP < X > > : IF Z*32 OR Z=45 OR Z=
29
PCI) THEN POKE FNP
X ) + 5 4 2 72'.' 1+3
622 GOTO 630
625 POKE FNP 00,42
638 MEXT : B3=B3+ . 5 ■ T=T+
, P< I > : POKE FNP <
T3=T3+ . 5 : Il 1 =D 1 +
649
IF B1>=R
011>+1
THEN
Tj
1 =
1
X
M
i
— M
— i I
1 + 1
: IF
MI >12 IH
EN Ml =
•i
1
-vi-
vi
fi
650
NEXT •• POK
E 198-
0
: IF
T •”>
i i-.
l-.f
.i.
finn
DB
1 /“% 1
X X
THEN PR
r j-. j t i irp
T
* r::±
•K *•. !
, 1
9 )
II
r
■j
R
IGH
TIEN
ERO x 1: RVS
] "MI B$
(
vj ; J; ,
*M
1 -
..
O
*1
VI
+ 1 3
00
655
PR I NTF:£ "
r «,/Pppr
•f
DppM
r
x
FI
..
[.T
r
..
c ,•
Q “ ;
: rp
R=1 THEN
FRI NT
ii
, R" ;
730
GOSUB 90
60 ' I *=“H
c< 1 $
y :
IF
T
X
=s
1
33
TH
EH 2
Q£l
"? cr
i J
XF 1=31
THEN P
!•?
I NT "
r c
LE
Q
p
1
r
ve
V
pr\p
*] «» : p
OKE 5328
1 , 9 ^ EH
D
745
IF 1 082
OR f r* ::r:
0
THE
N
75
0
7 4 ò
FRINÌ" !.:C
LEPRI E
'£
T ftNC
01
L'O
M
p
H
T
i
T T‘.
ILI
TFT :
PR I NT " E DOWN ] P I
»« p
< 1
»»
V
il
P
RI
NT"
EMOT
; •« fi? "« -, «• V
” • PR I N
T
ti Tj.|T
ii
750
IF 1=136
THEN
4
00
780
IF 1067
THEN
6
cr cr
785
PR I NT " [ C
LEPRI [
p
risso
K
RV
!£•
]
G
I
OR
NI
CRIT
ICI " : PR
T KIT »« r •“>
x i n : L
DOWN
K
py
1
.j
p
[
RV
OFF
ISIC
. E2 RIGH
TI [RVS
i
E [ RV
OR
F3
n
0
T
E 2
RI
GHT1
r RVS] TIR
VOFF 3 H
T
i
! 1
0
790
FOR 1=1
TO 3 : F
o
p T~
0
TO
1
£-•
T
X
F
CDC
I, J>
=0 THEN
794
791
K2= I NT C C
Da, j>
/
1 00 >
: !<
i ~
j.
p
Ti
<
r
X
> J
) -K
2*10
0 ; K2=K2-
i
792
PRINTLEF
TT< FT,
6
+2#J
TPB
(
r
I
-1
>+7
>MID
*<B*,K2*
3+1 , 3)
Cj
TR*<
IN
K
1
>
'i
794
NEXTJ, I :
GOTO 6
5
c
•J
800
t=0 : IF V
1 = 13 T
H
EN 3
10
805
FOR 1=13
+ 1 T.O
V
1-1 ^
T=
T-
<
I
,***
'4
= INT <
I/4>
> : NEXT : T-T- < I 3/4= I NT < I 3/4 > RN.D I 2>58
O \ Jyj
T=T+ < V 1
- 1 3
-1-
( D0>- 1 2 ) ) #365 ( TJiT>
= 1 2 > W
Tfp( T 8 ’?
..... T f
PK~ t
•“> ') :n«: f f“ : ; T v f Tifi ') : ppT
URN
RPtf
'? r.::: T :
y :> :
"Ci!-
; pir.T; «pu
1
j-4 • J i-.jp
! JT
T -t: ;
1 1 = VAL < LEFT $ < I $ , 2 >
> : IF
jvj 1 T\-$ ( T:J
*r* ! 2 1 — 2 • T
•- 2 ■'
;j >>
h q «* r?p hi ? r , t <\y . •;;> t -j
:f »* P\ H
1 mb
1 !.«.• 1 ... !*,l !
I 2~VfìL (
MÌE !
$<I
:£ ; | , 2> ;» : T S^VRL < R I G
, 2; ) ) : f\
( !•/ )
V( I3> : t F‘ 1 1 >i 2 OR
T 1 1
TMFM 1 Pi
30
1 rr./M
! ©30
TP -\y\&
6b r ufìi r p
PKjTi T
KJfj
: - ; p r T
tì c:« t *' r
1 ) THEM RETURN
DO " : POR 1=0 T0-
1 pori : j-.,jp
T ; pp
r kry n r r
j FhR "! ” : T 1 rrfi : pFT! IR-
U
1 -J
Sh5£ì
PRIMTFf"
i“ i io ~i r
BLEU 3
PRETI I UH TASTO"
9 Fiori
fìFT T it' ■ ]
p T
un yup
N 3069
3065
PPTj |pK!
Ci Qypi
POR 1=1
TU 21
: PRIMI
M 1 1\$ *: M r NERO I! 1 E I RH
CO .! t ROSS
fi “j r P7
7! jp i r «,.«
i olr i e ve:rd5“ :.i e blejj
3 r ri t pllo
*] » , 1 ..«..
( I >8 > #
8-f ( I ;> 1 6 } : i > " r py
sì " i; V • : NÈ
vr : pp
ii: : : •-
IMI” TV
FRTiF i rpVRl TI FFT‘3 !"
INSTI CR
y OFF ]
H ; ; pOT
URH
3 1 00
n htr 3.' •
23 3 1
, ■‘•■J'i'ì . “J }
,30,31,31,38, 31,3
0 * 3 .1.
31
* *
2. Grafica
* *
Parallelepipedo
Queata sezione del libro e' dedicata alla
grafica a colori.
Troverete un certo numero di nuove ed
interessanti applicazioni delle capacita'
grafiche del vostro computer Commodore.
Gli esempi proposti possono essere modificati
0 combinati tra loro per adattarsi a
qualsiasi esigenza.
1 titoli rappresentano solo l'idea originale
da cui sono sorti i diversi programmi , ma la
vostra fantasia potrà' dare vita a nuove ed
infinite creazioni.
Possono essere modificati i colori degli
oggetti e le posizioni sullo schermo, nonché'
i vari movimenti.
Il seguente listato genera il disegno di un
parallelepipedo regolale .
1 0 PR I NT n IXLEfiR ] n • REM PUL I Z I fi SCHERMO
20 PRIMI : PRIMI ; PRIMI
30 PR I NT8FC < 5 > ; CHE* < 1 1 D ;
40 POR L= 1 IO 1 0 : PR I MICHE* < 1 63 ) ; •* NEXT
50 PR I MI CHE* < 112
60 POR L=1 IO 13
70 PR I NTSPC 5 > ; CHE* ( 1 65 > ; 8PC < 1 0 > ; CHR* < 1
32
67 )
80 NEXTL
90 PR I NTSPC ( 5 > ; CHR$ < 1 08 > ;
100 FOR L=1 TU 1 0 : PR I NT CHR$ < 1 64 > : NEH'T
110 PR I NT CHR$ < 1 86 >
33
Demo grafica
Quello che segue e' un programma dimostrativo
molto Interessante.
Se avrete la pazienza di attendere che il
vostro computer esegua tutti 1 suoi calcoli e
stampi le diverse migliaia di punti che
comporranno il disegno finale.
Il programma sfrutta la grafica ad alta
risoluzione del Commodore 64.
Nella linea 10 sono contenuti i valori dello
sfondo e dei punti disegnati.
Alla linea 50 troviamo altezza e distanza del
punto di visuale, mentre la linea 90 contiene
la funzione da rappresentare.
Le linee 130 e 140 stampano i punti.
Purtoppo il calcolatore nella sua versione
base, senza cioè' un adeguato supporto di
routine in linguaggio macchina impiega 50
minuti per completare la figura, ma ne vale
la pena .
Salvate il programma prima di lanciarlo,
perche' un'eventuale errore di trascrizione
porterebbe all^inchiodamento” della mac-
china.
5 V ~53248 : C : " 56576 ■ Sfì=24576
8 PRIMI" CCLEfìR'J "
34
19 FOR 1 = 1 6384+7* 1*924 TO 16384+7*1924+9
99 : POKE 1,91*1 6+ 1 4 : NEXT
15 FOR 1=24576 TO 24576+8191 : POKE 1,9-N
EXT
20 POKE 'v'+ 1 7 , PEEK < V+ 1 7 '? OR 32
30 POKE V+24 , 7* 1 6+8
35 POKE C , F'EEK ( C ) OHI) 254
50 11=220 44=180
60 FOR X=--160 TO 160
70 S=20
80 I F X/20= I NT ( X/20 > THEN S=1
85 FOR V=0 TO 60O STEP S
90 2= 1 6*C08 '• . 06*X >
1 00 I = I NT ( 1 6@+B*XX < B+V-) > : J= I NT < 1 60 H~D* <
2--H > / ( B+V > >
1 30
Bfì=Sfì+320* I NT ( J/8 > + I NT < I /8 >
#8+ < j- r nt
»!’ J/Q ) :*}*: )
1 40
POKE Efl . PEEK < E fi > OR < 2 T< 7 - (
I-INTCI/S
ì $0 j ’j ;i
150
NEXT : NEXT
1 y000
ijiij 1 1 j 1 00yti
35
Prova schermo
Questo programmino di utilità' vi consente di
vedere tutte le combinazioni di colori
sfondo/bordo che il vostro computer può'
offrirvi , visualizzando anche i valori che
andranno inseriti nelle locazioni 53280 e
53281 per ottenere ogni combinazione.
.10
■f :.\j. !»
20
( 29 :»
30
CG$=CHR$
< 1 7 >
•~i r.r
. . J
POR S~0
TO 255
40
FHP M
rn pff
50
POKE 532
80 , K
60
PRIMTPf;
p i { T| t; ; r*Tj
$ ; CG$ ; CG$ :■ CG$ ; CGf ;
CG$ CGf 1
CG$
70
FRI NT" [ .1.
j./
0 HORH'J [ 15
R I GUI J POKE53280 .. "
r~:
r -.j
-PRINT" C2
DOWN] [15
R I GHT .3 P0KE5328 1 .« " ;
80
POR 3>j.
T'fj 500 : 0p’:-!
T
90
T
00
POKE 532
8 1 . S
10
NERI
36
Istogrammi
Questo programma fornisce un' istogramma
diviso in dodici mesi delle entrate annuali
di un determinato commercio o situazione
economica di famiglia.
Ogni barra può' essere lunga al massimo 17
unita' .
100
DIN fi
(23> .• M(23)
C ( 23 ) .
L:T(23)
110
s$<: i >
*" 1 RVOFF 3 _
: S$<2.‘
« = ''[ RVOFF 3-," -S$
( 3 ) "
I RVOFF ] mi" ■
SS <4
’C RVOFF 3 ■"
120
Si : ( 5 )
1 ‘ I” p *, C‘ % ~| 1 1 ;
S:f ( S ) = 1
'[RVS 3 " : S $<?> =
" E RVS
: s$<8> =
"[RVS 3
il
130
V~ : 0 ^ N
= 1 5 : Z=- 1
140
PRINT
" C OLEARI CG
TALLO 3 '
' : POKE 53280.' 9 :
POKE: 53281 , 8
188 resture:
190 INPUT "VALORE DI UNA SUDDIVISIONE"; F
195 F~ 1 /F
200 INPUT " QUANTE BARRE a-23>";
N
210 P— 2 ■ I F N> 1 1 THEN P=1
220 1F N< 1 OR N>23 THEN 190
230 POR 1=1 TO N
250 PR I NT " N . " I • I NPUT " LEGENDA " ; L$ < I > : I N
PUT " VALORE " : A < I > : PR I N T • L$=LEFT$ ( L $ ,
37
1 2 >
260 NEXTI
270 PRIHT" CCLEfìR]"
280 FOR 1=1 TÓ N
290 M ( I > = I NT < < fi < I > #F > /8 )
295 , C ( I > = ( fi < I > #F > - < M < I > #8 >
300 NEXTI
320 IF V=N THEN 800
340 V=V+ 1 : X=X+P : Z=Z+ 1 : M=M ( V > : C=C C V >
345 READ D
350 PRINTCHR$<D>
360 PR I NT " L HOME 3 " ; : FOR I =0 TO Z : PR I NT : NE
XT
380 F'R I NTLi : ( V >
400 I F M-0 THEN GOSUE 700 ; GOTO 320
420 GOSUE 480
448 IF C>0 THEN GOSUE 610
46Gi GOTO 320
480 PR I NT " l NONE 3 " i - FOR I =1 TO 23 : PR I NT : N
EXT
490 FOR 1=1 TO M
500 FOR J=1 TO 8 : PR I NT T fiB < X > S$ < J > " [LEFT
3"; - GOSUE 600 •' NEXT
5 1 0 PR I NT " C UP 3 C LEFT 3 " ; NEXT I
609 FOR H=1 TO 10= NEXT: RETURN
6 1 8 PR I NTSPC < 1 > S$ < C : RETURN
700 PR I NT " C HOME 3 " : • FOR 1 = 1 TO 23 •' PR I NT : N
EXT
720 FOR ,r=l TO C ; PRINT TfiB (. X > S$ < J > " C LEFT
3 " ; : GOSUE 600 : NEXT J : RETURN
800 GET fi* : IF fi*= n " THEN 800
820 RIJN
1000 IifiTft 5, 159, 156, 30, 158, 129, 150, 152, 15
3, 154
2000 rifìTfì 5,159, 156,30, 158, 129, 150, 152, 15
3, 154
38
Pallina
Simpatico programma di animazione che mostra
una pallina che rimbalza da una parte
all'altra dello schermo, deviata dagli
ostacoli colorati che incontra sul suo
cammino, producendo suoni diversi ad ogni
rimbalzo.
3 R E M A A A A A A A; ; *:• A A Ai AA A AAA A A i A A A A A A A A A A A A A
A
4 REM A PALLINA
A
5 REM AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
A
1 0 CLR : PR I NT ” C CLEAR I C E BANCO 'J "
11 G08UB 10O0
13 POR C=5529S TO 56295 : POKE C, 1 : NEXTC
15 POKE 53281,0
21 FAR L=1 TO 20
25 POKE 1 024 + 1 NT < END < 1 > A 960 > , 1 02
27 NENIE
30 X = 1 ; V— 1
40 DX=1 •• DV=1
50 POKE 1 024+N+40AV , 8 1
60 FAR T~1 TO 10
70 POKE 1 824 + X+49AV , 32
40
80
>OX+B>P IF X=0 OR
SUE 1 000
>03 9 THFH D
3. 00
V=V+DV : IF VC1 OR
SUB 1000
V>23 THEN D
115
I F PEEK < 1 024+X+40
4eV.> = 1 02 THE
: DV=-HV : GOTO 135
120
GOTO 50
| 35
POKE 1 024 +X+40# 1 V
1 40
GOSUB 1 0@0
1 50
GOTO 80
1 000
RB-54291 : V-54296 :
WF-54298 ; HF
F=54286
1010
POKE V, 15 POKE WF
, 33 ^ POKE HI)
1 020-
POKE HF. 2*5+15 : PO
KE LF , V#5+5
1030
POR U=0 TO 99 : NEX
T! !
1 H AFi
.POKE WF .■ 0
UfJb
POKE 53280 , X$5+ 1 5
: POKE 53281
1040
RETURN
41
Grafica
Quello che segue e' all'apparenza un
programma abbastanza complesso , ma che
illustra brillantemente alcune delle piu'
elementari capacita' grafiche del vostro
computer.
Dopo una breve attesa verrà' disegnata una
sinusoide sugli assi cartesiani e in
seguito. •• ai piu' bravi scoprirlo!
5
PRIMI"
mi FRR ì n
1@
F0R
55296 TU
56295 : POKE IO 1 : NEKT
20
FOR Jj~
1G24 IO
2023 : POKE D, 160-NENT
20
GOTO 2
50
1 90
INPUT
"C HOME IH
li il • U II
.* i .* r i .* »
105
GOSUB
i j. 0 : GOTO
1 00
1 .1. 0
y — y + ], —
FlBS < SGH
< S > > ■ H2- < H*S+H0 > : V2- ( V
*3*'. 75
4-V@
115
FRI NT"
[HOME]" ••
SO 1 @24 ; 00=55296
1 20
H2-H2/
,;;'J • ~ ‘ /
2-IF V2>25 OR V2C0 OR
H2>~40
1 OR H2<6
THEN POKE CC+39, 1 : POK
f
Q , 191 : pp
TURH
121
K~PEEK
( T Kj T* j-| 9 )
+ SC +960 ~ I NT ( V2 *40 ) : PO
T J--.ST
< H2 > +C0+
960 1 NT < V2 ) *40 .• CK
1 30
L~0 : G~
0 : I P IO 1
27 THEN K=K AND 127 -0=
42
1
131
IF
fy*
:~9
6 OR K-32
THE
N
L“0
132
IF
K
~ 1
26 THEN
L
= 1
133
IP
P
— 1
j.
24 THEN
|
ss 2
134
IF
K
— 4
X
23 THEN
L
=4
135
IF
j.:;‘
= 1
08 THEN
L
: ~: ; 3
1 36
IF
SS 9
7 THEN
L
=5
137
IF
k
ss 9
8 THEN
i
t—
X CU.
1 3 8
IF
[/;
“1
27 THEN
l
5=9
1 49
IF
G
= 1
THEN L
=
15-
L
150
HI
=i
: ì
F H2-- 1 NT <
H
2 )
ss
.5 THEN
HI =2
1 52
•,.» i
1 i.
=4
; T
F V2 1 NT •:
l |f l
j '\
SS
.5 TH
EH
Vl = l
155
0=
HI
#V
1 : V2= I NT *:
i jf l
1"’ '*! :
J.-4
2=1 NT
( h
2
;i
1 60
IF
o
J
L<
0 THEN 15
:@
165
0=
0
OR
«... : G0SUB
94 :
p
r?j,;p
IN
y
H 2 } y
C 4
96
0-
IN
T < V2 ) #4 0 ..
o
■RE
T
!
URN
180
0=
N
0T
0 : 0=0 Hi
!D
L-
H
OSUB
19
4
: POKE
i
NT
<:h
2 •'
+SC+960-- ’•
i (| i
2 > $
4
0 , n : R
py
u
ou
: : »
194
TP'
0
=*.0
THEN 0=5
<6
• p e
y
URN
195
OH
0G0
TU 201.. 26
i2
.. 20
i3
, 2@4 ,
20
5
, 206,2
07
08
, 2
09.. 210.. 21
1
,21
Cm
■"> 1 o
2 1
4
,215
201
0~
12
6
•• RETURN
2Q2
0=
12
4
: RETURN
203
0=
del
6
: RETURN
204
0=
12
3
: RETURN
205
fì~
97
: RETURN
206
0=
•-> cr
5
: RETURN
207
o~
23
: RETURN
ir-'yy
0=
10
O
^ RETURN
209
0=
12
r’
: RETURN
210
0=
22
5
: RETURN
211
0 =
“i C.T
d-J
ì
• RETURN
0=
98
^ RETURN
.
2 1 3
0=
25
: RETURN
214
0~
25
4
' RETURN
215
0=s
•“> v
imm tmm
4
: RETURN
43
2 4 9 R E M $ : M & :*?«• $ $ :*!•: T! E M 0 $ * $ $ $ ^ $ $ $ $
25@ PR I NT " C HOME 3 " ; CX~ 1
251 POR Q-0 TO 2# ir ST ?:;: ' ,,;:
: h=Q
C;r-~ j M K: i : ) -j H : yt-inpIS
i( 04 : V-'E, 5*SIH02>
1— u
GOSUE 1 1 0
253
NEXTQ
255
PQR !-j~:0 “f!
B 12@ : NEI/!'
: H2--H0
cr
i:.;. • j •*
POR p=SC '
258
J. i ! .i. i
259
F=.-:F+128
260
POKE P .. F : !
270
C -7 ■ s=2 : H<
O IA
pop Q~Q T|
03/C) ; H-O
V“ ::: S I N ( Q > $E/P
200 GOTf* - ;, 90
44
Nevicata
Bianchi fiocchi di neve scendono lungo il
vostro schermo fino a che non premerete il
tasto asterisco *.
Non sara' molto utile, ma e' senz'altro
piacevole da guardare.
10 PR I HT " [ CLEFIR :} "
20 SL~IHT(2000*RNIK 1 > > •' IF 8L>2@23 THEN
20
30 IF SLC1024 THEN 20
40 POKE SI. .• 42 ; POKE SL+54272.. INT < 15#RND<
1 ) >
50 GEI K*
60 IF THEN 80
70 GOTO 20
80 FRI NT" L OLEARI "
90 PR INT "PREMERE <Q> PER FINIRE"
110 PR INT "PREMERE XR) PER RICOMINCIARE"
120 GEI HV$
130 IF HY$*"" THEN 120
140 IF HY$="Q" THEN 170
150 IF HVf="R" THEN 10
160 GOTO 120
170 END
45
Bozzetti
Ora siete in grado di disegnare sullo schermo
del vostro televisore linee, barre,
diagrammi, cartine e qualsiasi oggetto vi
passi. per la mente.
Usate la vostra tastiera come se fosse una
penna e il video come se fosse un foglio di
carta .
Le linee da 40 a 340 accettano i comandi di
movimento in alto, in basso, destra e
sinistra rappresentati rispettivamente dai
tasti U, D, R e L.
Nessun altro tasto verrà' accettato.
Le linee 400-410 produrranno il disegno.
10
FRINÌ
"CCI
_EfìR3 "
20
1 02
4
40
GEI K
$'
50
IF K$
zr . 11 11
THEN 40
60
IF !<*
"!J
" THEN 80
70
GOT O
100
80
IF X-
40>
1023 THEN
98
GOTO
400
100
IF K$
:="D
" THEN 12i
110
GOTO
VMM
120
l'F X+40C
2023 THEN
46
139 GOTO 4@0
208 IF !<:*•= "L" THEN 220
210 GOTO 300
220 I F < < X-2 ) /40 > = I NT < ( X-
230 IF X K.1024 THEN 49
240 X*X-1
25Gi GOTO 400
300 IF !<$=•- "R" THEN 320
310 GOTO 40
320 ì F < < X- 1 > /40 > = I NT < < X-
330 IF X+ 1 >2022 THEN 40
340 N=X+ 1
400 POKE X+54272, 1
419 POKE X • 8 1
420 GOTO 40
2 i 1- ' 4* 0 ) THE. N 4 0
1 > /40 > THEN 40
47
Life (cellula)
ai «h
ai fi
fi ai *h ai
ai
H TJ
C 4J *0 H
c
fi
3 0) v
>
n ai
0
ai
■H +J
% -0 -H o
o -»
C (0
fi jC c •
<M
h~
z
o
z
a 3
•H -»J
uso
jV;
•! —
cd
X-
J__i
0 * rH
■
c
4) -H 4> IO 41
LO
i—
w
! —
z
3 H
-H
ai ai
•0 0 -H b -o
m y m
o
iV
•__!
il
h ai
c
C fi
*4 > *4 *4 H
Ili
Lii
i — t
X
o
•w u
0
o ai
<0 41 «0 >
N
c. *
>
-H
-H u
3 +J ®
o
» — t
-J
z
d)
N
n a
0) 01 fi rH
Li
iT: tH
fjj
LlI
z
•k+
-H
fi
■H Oi
■H fi 3
® H
o
i~{
H
P-l
T3
M
41 «0
>4 fi
z
q
fi
ai
0 u
fi ai
« — !
tH Li..
t t - :
|_L_j
o
"7"
0
c
a
hj -4 +j ai
o
UJ
i
rH fi
ai
fi
4J H C 4J
p: ? c»
Cl :
fjj
¥t
x:
-H
Ot-H 0
3 0 C fi 4-1
!
-i--!
L : -:
i—
c
•o c
a > fi 3 o
)*T~
j_0 X*
n
;X
•T*
i] t
0
ai
c
■
C +J 0"D
i — r
O tH
CO
! l
X 5
! — i
o
z
(0 «H
fi
<4 IO
fi
**H 0
o
1* :m - t
PL
j-.-.
td
a
44+
•H 0
u
rH
c
fi *4
! — f
• • PP
* !1
o
■frf
_i_
z
PÒ
3 u
ai
3
h o ^ a
• — !
! .£; j
CJ
rr
X
r —
PQ
i
li
fi
>
41 4l
c -H -1 T3
li!
CO
r,\
— .j
H*C
c
•H fi
■H
u >
aixj fi c -u ai
ij;
r— : O
X»
\—
z
t-H
UJ
fi c
XJ
fi
0
IO IO 4-1
UJ
CO O
Tf"
-kf
H-i
X
x>
o
--
-J
3
4J 01
4J -h ai
-J
C*ii • •
6i
P-ì
Uj
Ù..
i —
ai
fi £
u
ai oh n ^
o
f ’! ri-
il
X !
-J
! —
o
-H
H
0 u
ai
4 4 4) 4 h
L-J
Ili
C\i
pi
i— {
t— {
L.»
fi V
rH
a
a fi k *h a o
z
“y*
sT;
Cj
Li..
r>
fi
ai
fi ai
m ai *0 fi >
fc~
UJ i —
P-.
OC
X
c?
z
P-i
-k*r
fi ai
■o
fH H
0
jC
-fc—
Ci
■-rH
-.
H"
co
rt-
il
'•_•*
s—M
fi c
3
u *h u ai
« — 5
O C ?
jj
i
z
C-
¥r
u 0
-H
01 rH
fi
C 4) 41 0 43
X
0_ « 1
•t— i
fij
*-• -i
z
Ci
T~j
L_»
j
•kf
0) "H
fi
4-1 H
**H
0> U
Cl-
• . j —
“r-
z
r-
h- i
X
j
0 N
41 41
*4
o h ai
1 — E j— •
'X.
j
XI
f’J
W
•Hf
UJ
:
ai
> u
ai
V V 0 41
tH
T-i
T"
i— ì
;T“
i
p
j
c*
an
TJ
0
4J -H C4JH
fi.*
-• Q:
li
i-H
X
X.
co
i
0
41 -O 41
«■o « O-H 3
Zi
*£'> O
-rH
’r—i
L>-
X.
co
e*
u. c ?
u.
ùi:
>
u
•H
fi
c ai a 3 «H
o
CO Ll
P-i
LL
C.5
j — s co
h— i
-k
ai
(J ■H H
■H C 4 0>H
H *
3
o ai
c
3 -h «h ai ai
t-r i
;T'.
X-
X : *
;T".
c?
ijj
H H
fi > TI
3 a h b « u
C*5 5
co
rf
LO
3
6@ C=C+1
70 GOTO 39
80 C=€- 1 : L=9
90 POR X=1 TU C~ 1
100 L=LEH(E$<K> >
1.1.0 NEXTX
1 20 XI =11 -C/2
130 Yl=33-L/2
148 FOR X = 1 TO C
150 FOR V=1 TO LEN ( < X ) >
160 ÌF M I Dl : ( Bt ( X > .* V .• 1 > O " " THEH FKX1+X,
Vl+V>-1 :P=P+1
170 NEXTV .• X
200 F'R I NT •' PR I NT : PR 1 NT
2 1 0 PR I NT " i: CLERR 3 GENERRZ I ONE : " G , " POPOLRZ
IONE : "P
215 X3=24 :
220 G=G+1
l .1 ..... 1 il .f ....
t r y ■ . , *4 — 1 • *r h
1 : R=@
225 FOR RR
=0 Tu 1 : GOSUB
11004
JEXTRR
230 FOR
••"l i Ci nn T kIT
XÌ-1 TO X2
250 FOR V=
VI— 1 TO V2
253 IF R<X
.. V > =2 THEN HO-:
, v ;.ì =0 :
GOTO 278
256 IF R<X
,.V)=3 THEN fKX
, V> = 1 :
GOTO 261
268 I F fì < X
.. V ) 0 1 THEN 27
0
261 FRI NT
TfìB< V-20> ;
262
IF X<X3 THEN
■„'* — r'*i
264
IF >0X4 THEN
Vi.*t V
266
IF V<V3 THEN
li il
T Ni — T
268
IF V>V4 THEN
il .i — fi
T 4— T
279
.NEXTV..X
V'4'4
i— —•
X1=X3 ; X2=X4 : V
1 =V3 •'
V2=V4
301
IF XI <3 THEN
X 1 =3 :
I9~--l
30F!
IF X2>22 THEN
ci : 2
2 ; 1 9=~- 1
305
IF VI <3 THEN
VI =3 :
19=- 1
307
IF V2>6.8 THEN
V2=6
J-! ; '[ '“4 1
49
R-0
500
POR X=X 1 - 1
TO X2+ 1
510
POR V~ V 1 -■ 1
TO V2+1
520
i;> ; 0
530
POR I=X 1
TO X+l
54@
POR J--V 1
TO V+ì
550
IF R<I, J>=
1 OR R < I
, J ) =2 THEN C=C+ 1
5£0
NEJ-iT J , I
5S0
IF R ( X .. V > =•
Q THE!"! 6
1 0 •
590
IF CC3 OR
04 THEM
R < X .« V > =2 : GOTO 600
595
P=P+1
SBB
GOTO 620
610
T F 03 THE
N ,R<X,V>
=3 : P~P+ 1
»... ,^{ „*f
mi.:: vj! i v
r #> j £'[ yi
X 1 =X 1 - 1 : Vi
:!. ■ , :: 1 ci z:1 X
2+1 •' V2=V2+ 1
640
GOTO 210
65 @
END
1 000
V=54296 : H .1.
5*4 7 3 ' L
1=54272 : MI =54276 : fi
1=54277 ■' Sì
-54278 ; P
H< 1 >=54275 : PL< 1 >=5
A 07 1
J, T CL i '-«*
1010
H2=54280 : L.
iL! 5 1 "!' 2 i y ■
M2=54283 : R2=54284 •'
S2=54285 : P
H< 2 >=542
82 : PL (2 > =548 1
1 020
H3=542o ( ■ L.
3=54286 :
143=54290 ■' R3=54291 :
83=54292 ; P
H<3>=542
89 : PL 03 >=54238
1 030
POKE V, 15 :
POKE fì 1 ,
9 -• POKE R2 ,• 1 3 : POKE
03 30 : REM
# & .4; M 4»; R 7 T H r !< •£• P F P fì V # M
$ $ jljl* : à; jljlj
1 835 POKE S 1 , 9 ■ POKE S2 , 8 ■ POKE S3 , 37 : REM
#*****:4!8UNSTfi I H ■!:•: RELEfiSE
nji: A* A,‘ *A: :Ai
1037 RETURN
1 640 POPE H 1 , 72 : POKE !... 1 , 1 27
1050 POKE H2 , 72 : POKE L2, 127
1060 POKE H3, 144 POKE L.3.-255
1 07@ POKE PL ( 1 > .. G&2 : POKE PH < 1 > .. 0
1 080 POKE PL < 2 > / 6*2 : POKE PH < 2 > !• 0
so
1 099 F'OKE PL < 3 > .. 0*2 ' POKE EH < 3 > .. @ : I F F'v'= 1
THEH 1 1 09 .
1 999 • PR I NT TRE < 1 0 > " *:+*#*********L+**^*:*. : ** "
; pf.> J j-,jT
1100 POKE W1.-33 ; P0KE W2 , 33 : POKE 03, 65
1110 FOR QQ=0 IO 0*10+55 : NEKTQQ
1 1 29 POKE M 1 , 0 : POKE W2 " 0 : POKE 03 , 0
1130 RETURN
51
Topolino
Ecco un altro simpatico esempio di animazione
e di grafica ad alta risoluzione.
Viene creato lo aprite del topolino Michele
che attraversera' ballando il teleschermo
accompagnato da un ritmo di sottofondo.
1 REM MICHAEL "S DANCING MOUSE L*
POR
0
TO
24
■ POPE 542
7 v 4-V
, O • NEXT
5
5=54
./ |*' j./
: POPE
3+24, 1 5 : F
OPE
8 , 220 ; F
OPE
S+ 1
68
: PO
<E
S+5, 15: PC
PE S
+6 .. 2 1 5
10 POPE
S4-
r .• j.
20 :
POPE S+8,
1 00 :
pupe b-+
12,
15: P
OKE
3+
1 3 •
2 1 5
15
PRIH
t 11 1;
:le
RR 1
: POP
E V+21,
1
2@
F OR
o 1 :r:
1 elei
t*~i IJ
IJ 1^1
TO 12350:
READ
Q1 '■ POP
E S
1 , Q 1
: NE
fy i
25
POR
S 2
1 23
rz m
■Jc.
TU 12414:
RRHIJ
Q2 : POP
p C;
2 .■ Q2
: NE
xt
30
FOR
."!• "•*
12416
TO 1 2478 :
9f&T\
i 03 : POP
:e s
3 , Q3
: NE
V T
« '. »
35
POPE
v+
39 .*
15 :
POPE V+l,
68
40
PRIN
T TRE (
16 E
i ) " C B I RNCC
ili RM THE BHNC
INO
MOLI
SE !
CCE
1..ESTE.1 "
45 P-192
58 POR K=0 TO 347 STEP 2
55 RK-'I NT < X/256 > • LX=X~RX*25 6
52
60
POK
E
i if i
, !...
X : P
DICE V
+ 1 6
, RX
70
IF
i
92
THEN GO
C;j 1 1:>
200
•-> c:r
i -J
IF
i
93
THEH GO
SUB
300
80
POKE
04
0,P
: FOR
y~ ;!
TO 6
0 : NEHT
85
P=P
+ 1
t
R>
194 T
UCM
1 ! ! 1 '!
p :::: 1 Q
90
NEH
95
EH»
1 00
DATO
3
0 ,
0, 1
20, 63
, 0 ,
252, 1
,Z„ \ ‘ ,
1 29 ,
ri*.;!
54
i
, .1.
2 i ,
1 2
9
, 2
54 ,
127, 1
89 ,
254, 1
ri. i ,
O ir
•_.* •...* ,
ci
54
101
DAT
fi
6
3 ,
ci 5 5
.• 252 ,
31,
l< Imm
48,
3, 13
i
, 1
92
, 1 ,
—i »:::
5
!
2g ,
3 , 1 39
, 1 9
2 , 1 , 2
31,
1 23 ,
1
, ci
55
, 0
1 02
DATA
1 ,
255
0 , 0 ,
124
... 0 .. 0 ,
25-* :
■ , 0 , 1
19
9 ,
32 ,
;•:> ,
i
j.
i
, 22
4 , 7 , i
, 1 9
2 , 1 , 1
92 ,
0 , 3 ,
1
92
, 0
103
DAT
H
0 ,
e, i
20 , 63
, 0 ,
252, 1
2 1 ** ,
129,
2 !
54
1
«».. • ••
12
9
54,
127, 1
89 ,
254, 1
c. r ,
255 ,
[zi
54
1 04
Il fi!
l "1
6
3 ,
2:55
-“i c; •->
3 1 ,
22 1 , d
4o ,
.. 22 !
i
1
, J.
q •;>
, 1 ,
-•i r.~
r.E
i!j
, ì
••HI *•••• J
ir
•.j , t *:„ • J • J
, 19
2 , 1 , 1
95 ,
123,
i
,2
o i
105
DAT
H
•!
255
, 255 ,
0 , 1
24,8,
0 ,
‘54 , ri
4
1 ,
19
3 , 0
- 7
i
1 23
, 7, 0,
204
, 1 , 12
3, :!
. 24 , i'“
..
1
8 ,
56
106
DATA
3
0 .
0 , 1
20 .• 63
, 0 ,
( •{
«:i r‘ ,
1 29 ,
ci.
54
i
.i j.
c.. r ,
1 2
'9
i :: v " :4 , i
X 1 J.
89 ,
r.-r i -j
cl ì ,
255,
254
107
DAT
3 ,
255
,252,
31
~j\/ 1 ( *::>
48,
3 22
i
-1.
, i
92
1
,--i
•;i c::
1 5
i
.• .1.
34,
3, 139
, 20
4.7 ì, 1
99 ,
1 52 ,
1
J.
•”> rr ir
, * Ì-..IJ
108
DAT
fi
!
55. .
224, 1
, 25
2 , 0 , 3
•“> c:
«4 , 0
1 09
DAT
li
r
T
4 , 0
, 204 ,
1 4 ,
0 , 248
ir.-
,
i , 0 , 1
j
2 ,
ii
2 - 0
.. G
68
, 0 ,
i
200
POK
i::r
u.
+4
, 12
9 : POK
+4, 12
O • ]**
:ETURH
500
POK
ir
+ 1
i t j
29 ; PO
j-’F
S+ 1 1 ,
1 Zi
: EET
j ]
RH
53
Autolab
Dopo aver creato un labirinto basato su pa-
rametri casuali, in seguito alla pressione di
un tasto qualunque, il computer vi mostrerà'
la folle ed interminabile corsa di una pal-
lina lungo tutto il labirinto.
1 09 D I M Fi < 3 > : fi < 9 > =2 : fi < 1 > =-80 ; fi < 2 > =-2 : fi 3
> =80
1 29 !4L= 1 02 : HL-32 : SC= 1 024 : fi=SC+8 1
148 PRIHT" C OLEARI CGIflLL03 CRVS3 " ; CHR*< 142
: F OR 1 = 1 IO 22
210 POKE fi, 4
220 J= I NT < RND < 1 > *4 > : X= J
230 B=fi+FKJ> : IF PEEK < B > =WL THEN POKE B, -J
: PURE fi+fi J ) /2 , HL : fi=B ' GOT 0 220
240 J=<J+1)#-<J<3> : IF JOX THEN 230
250 J=PEEK<fi> : POKE fi, HL : IF J<4 THEN fi=fì-
FK J> : GOTO 220
300 PRINT" LABIRINTO PRONTO! PREME UN TfiS
TO. "
310 GET C$ = IF 0$="" THEN 310
1000 POKE fi, 81 : J=2
1020 B=fi+FKJ>/2 : IF PEEK < E > =HL THEN POKE B
54
, 8 1 : FOKE fi , HL. : fi~B : J* < J+2 > +4* < .J> 1 >
1 638 J~ < J- 1 4# J~0 ) ^ GOT u 1. 028
55
* *
3. Gestione delle stringhe
* *
Divisione in sillabe
Questo utile programmino dividerà' in sillabe
qualsiasi parola voi digiterete.
200
FRI
NT " II CLEflR
]"
210
S= 1
: primi
220
INF
UT " VOGHE
0L0" ; : F'R I NT
yy t w
IF
fl$="0" TH
EH END
240
IF
-> {
S>L..EN < fl$ >
(a
THEN FRI NT" [
250
C, Am
Va
H I ET < Fif .. S
1 ;■ : GOGNE 460
260
IF
H~0 THEN
430
270
y* =
M I B$ ( fli .• S
+1,1 ) : GOSUB 4
280
IF
fi=@ THEN
360
290 IF >•;$=" I" THEN 320
300 i f m i :of ( m- , s , ì > = " i " or m i m- < m , s , i > -
"U“ THEN 430
310 GOTO 440
320 K$=MID$<Rf , $+2, 1) : GOSOE 460
330 IF S>1 THEN IF MIDITFl*, S-l , 2> = ,, QU"
HD H~- 1 THEN F'R I HTM I B$ < fl$ , S , 2 > ; : S=S
2 : GOTO 240
340 IF fl=-l THEN 440
350 GOTO 430
360 IF S+2>LEN<fì$> THEN 450
370 K*~MIIi*<fl$, S+2, 1> : GOSUB 460
56
+ ID
380 IF H“— 1 THEH 440
390 I F M I H$ < fì* , S+l , 1 > =M I B$ < fi* , 3+2 , 1 > THE
N 458
400 fì 1 $=M I m (. fi* , 3 + 1 , 1 > : I F R 1 *= " 3 " OR fì 1 $
“"il" THEH 440
410 fì2*=MIB*<fì*/ 3+2 .• 1 > : IF fì2*="R M OR fì2*
~"L" OR fì2*="H" THEH 440
420 GOTO 450
430 PR I NTM I D* ( fi* .• 3 .• 1 > : S~S+1 : GOTO 240
440 PR I NTM I B* < fi* , 3 , 1 > ; M : S=S+ 1 : GOTO 24
0
450 PR I NTM I B* ( fi* , 3 , 2 > ; " ; : 3=3+2 : GOTO 24
0
460 R~NT” ,, R" OR K*="E" OR " I " OR "
0" OR y,$~ " IJ " : RETURN
57
Invertitore di parole
Digita una parola qualaiaai od un numero e
acoprilo acritto alla rovescia aullo schermo.
Alla fine il computer attende che tu prema un
qualaiaai taato per ricominciare.
10 PRINT" [ OLEARI ,r
20 INPUT "PAROLA, • , HUMER0 : " ; N$
30 IF N$=" " THEN PRINT" C2 UP.I" : GOTO 20
35 PRINT" t OLEARI "
4@ L=LEN<N$>
45 PRINT "ORIGINALE : ";N$
50 PR I NT " ROVESC I ATO •' " ;
60 POR V=L TO 1 STEP -1
70 B$=Miri$<N$, V, 1)
80 PR I NTB$ ;
90 NEXTV
100 POR K=1 TO 10: PRINT NENT
110 PRINT "PREMI UN TASTO"
120 PRINT "PER CONTINUARE"
130 GET f\$
140 IF A$=" " THEN 130
150 B$= " "
160 GOTO 10
58
Parola d’ordine multipla
Questo e' un sofisticato sistema di parole
d'ordine che permette l'accesso al programma
ad alcune persone, ognuna delle quali avra'
un personale numero di codice ed una
corrispondente parola d'ordine.
Ogni utilizzatore deve immettere il suo
codice e quindi la sua parola d'ordine.
Se il numero e' sbagliato la parola non
potrà' mai essere esatta.
Se invece il numero e' giusto ma *la parola
non corrisponde, niente da fare egualmente t
Puoi aggiungere altri utenti autorizzati . a
questo programma scrivendo nuove linee nella
subroutine posta fra le righe 300 e 340.
10 PRIHT" CCLEflR] "
20 INPUT “DIGITA IL TUO NUMERO PERSONAL
E"; Ufi
30 GOSUB 300
50 INPUT "PAROLA D'ORDINE" ; P$
60 IF PS*"" THEN F'R I NT " C 2 UP3" : G0T0 50
70 IF P$*PW$ THEN 110
90 FRI NT "DATI NON ACCETTABILI"
100 END
110 PRINT"0K! IL CODICE E ESATTO"
120 FRI NT "PUOI ACCEDERE AL PROGRAMMA PRO
TETTO"
130 END
300 IF
Ufl= 12345
THEN
PW$=
"ZEBRA"
310 IF
UH ”23 45 fa
THEN
PW$=
"COBRA"
320 IF
UH 3 4567
THEN
PW.f=
"TIGRE"
330 IF
UA=45678
THEN
PU*=
"CONDOR
340 RE
TURN
60
Risultati in cornice
Questo programma permette di ottenere una
piacevole presentazione dei risultati in-
corniciandoli in una 'scatola' lampeggiante.
10 PRIMI" CCLE ARI "
20 PRIMI "DIO Ufi UM MOME ED UN PUNTEGGIO
li
30 PR INI "LUNGO RL MASSIMO 10 CARATTERI"
40 PRIMI" INCLUSI GLI SPAZI"
50 PRIMI: INPUT jf
60 IF LEM (II) >10 THEM PRIMI "TROPPO LUNG
0 " : GOTA 50
70 IF LEM (TU' -OS THEM PRI NT "TROPPO CORTO
" : GOTO 50
900 PR I NT " C CLEAR J C 8 DOWN 3 " ; CARI < 5 > ; CHRf
( 1 28 )
9 1 0 PR I NT TAB < 1 5 > ; CHRf (111);
920 FOR L=1 TO 1 0 : PR I NTCHRf ( 1 63 > ; : MEXTL .
930 PR I NTCHRf ( 1 12)
940 PR I NT TRE ( 1 5 ) ; CHRf < 1 65 ) ;
950 PRI NT TRE (14 ) ; Tf ;
960 PR I NT TRE ( 26 ) ; CHRf ( 1 67 )
970 PR I NT TRE ( 1 5 ) ; CHRf ( 1 08 ) ;
980 FOR L= 1 TO 1 0 : PR I NTCHRf ( 1 64 ) , : MEXTL
998 PR I NT TRE ( 26 ) ; CHRf ( 1 86 )
61
1000 PRINTCHR$<144;
1010 PR I NT CHR:f (159;
1100 GET K*
1110 IF K$a"" THEN
1120 CLR
1130 GOTO 10
1100
62
Messaggio segreto
I messaggi segreti possono essere molto
divertenti t
Spesso sono formati da codici dove le lettere
sono sostituite da numeri.
In questo programma, il computer fa proprio
questo: associa un numero di tre cifre ad
ogni lettera dell'alfabeto.
Usando questi numeri, si possono mandare
massaggi segreti assolutamente indecifrabili.
E' molto improbabile che numeri uguali siano
associati a lettere diverse, dal momento che
i numeri disponibili vanno da zero a 999.
Fai attenzione, quando batti il programma,' di
separare con virgole le lettere nella linea
30.
La linea 90 fa scrivere i risultati in due
colonne.
1 0 PR I NT " C CLEfìR 3 " • REM PUL 1 2 1 fi SCHERMO
20 Z-RNIK-TI >
30 DRTfi R , B , C , D , E, F, G , H , I , J , K , L , M , N , 0 , P
,Q,R,S,T,IJ, , '.M'J,K,V,2
40 FOR N=1 TO 13
50 C= I NT < 1 000*RND < 1 >
60 READ L*
70 D= I HT < 1 0003KRND < 1 > >
80 READ J$
90 PRINTL$;
100 NEXTN
110 GET K$
120 IF K$= H "
130 RESTARE
140 GOTO 10
•m::, J$; " " ; D
THEN 110
64
Ordinamento alfabetico
All 'Inizio vi verrà' domandato quanti
elementi numerici o alfabetici volete mettere
in ordine alfabetico.
In seguito la visualizzazione avverrà' in
gruppi da 20 elementi.
Premete il tasto (c) per continuare la
visualizzazione.
10
20
30
40
50
60
70
80
80
;! 00
PR I NT " C CLEflR 3 C 2 DOWN 3 l RVS 3 ORE I MfìMENT
0 fìLFfìBET I CO [ RVOFF 3 "
pp T KIT
PR I NT " - 1 NTROBURRE 0 PER TERMINARE IL
PROGRAMMA"
PR I NT
PR I N T " NUMERO B I VOC I ", ,
INPUT N
IF N-0 THEN 330
DIM fl$ < N >
POR 1=1 TO N
pr ini" voce" ; l ;
TMpllT pt-.Tì
A ! Il I I H'- •. J. ••
110 MENTI
1 1 5 PR I NT " [ CLEflR 3 E R I GHT 3 "
120 M=N
13@ T---M/2
65
131 M-IHT<T>
140 1F M=0 THEH 280
150 K=N-M
160 J=1
1 88
L=I+M
1 90
IF R«IK==R
$<L) THEH 250
208
T I >
210
fì$<D=fi$<L)
220
PS »: L ) ~~ T ‘$
238
I = I-M
248
IF I>=1 THE
H 188
250
J~J+1
260
IF J>!< TI-IEH
1 30
270
GOTO 170
280
FQR 1=1 TO
H
IF 1/200 IH
T< 1/29 > THEH 298
284
PRINT" r.RVS'1
il •
<C> PER CONTINUARE
285
GET C$ ; I F C
$0"C" THEH 285
290
PRINTfìSC I >
300
HE/T I
310
PRINT
320
GOTO 40
330
END
66
Striscia scorrevole
Inserite nel vostro calcolatore una frase per
ogni richiesta di input (il numero totale lo
stabilirete voi) e la vedrete scorrere da
destra a sinistra al centro del vostro
televisore come avviene per le pubblicità'
luminose di molti negozi.
10
POK
E 5328 1,0: RE
] MTCHR •$ < 5 )
20
FRI
MICHE* < 147>
3£i
T KJP
{ rr 11 1 "»! 1RNTF !..
]' upp' II I I j-.JPj iT Vi II 'I l •• ; r
40
DIM
fì’4KE> : POR !■’•
-1 TO E
5@
INF-
! !T h't ( K ) ; fi $ (
K > = H
" f R* ( !< > : MENTI
1 00
FRI
HTCHR$< 147)
110
POR
F~~ 1 TO E
1 20
F OR
1-40 TO 40+
LEMFHKP))
1 30
PR I
MICHE* < 19/ P
rimi" ne »owH] " ; tab<
40 )
; M 1 D* < R* < P > ,
, 39 ) ; •• "
140
FÒR
J = 1 TO 1 00 :
MENU, I
150
ned:
TP
1 60
GEI
S* • If S$= ,M '
THEM 110
170
end
67
* *
4. Musica
* *
Beep
Puoi far suonare il tuo computer a comando.
Il comando FOR/NEXT delle linee 20 e 90
provoca la ripetizione automatica del "bip"
per dieci volte.
Ovviamente puoi cambiare il numero degli
squilli sostituendo il numero 10 nella linea
20 .
La linea 30 fa apparire la parola "BEEP"
sullo schermo.
Le line 40 e 50 fanno durare il singolo
suono .
10
PRINT'
' C OLEARI "
: REM
PULIZIA Si:
THERMO
20
FOR L=
= 1 TO
10
30
PRINT'
'BEEP"
40
PQKE 54296..
15
50
PQKE 54277,
190
: POK
E 54278,248
: POKE 5
4273,51
55
PQKE 54272,
37 ^ f
: '0KE
54276, 17
60
FOR T=
= 1 TO
300
: NEH
TT
1 00
POKE 54276,
0 : P(
:«ke
54277,0: POKE
E 54278
, 0
110
HENTL
68
Piano
Trasformate il vostro Commodore 64 in un
formidabile pianoforte a piu' ottave e
lasciate la vostra fantasia libera di
spaziare tra le note musicali per creare
tanti piacevoli motivi.
Il programma si spiega da se' e vi permette
inoltre di scegliere la forma d'onda del
segnale in uscita.
10
REM PIENO
1-00
PEI NT "[GL
EHRHEVS!
[RI GHT ]
[RI GHT 3 1
r p r qht ;;
[RI
GHT] CR
IGHT] !
[RI
GHT] [
RÌGHT] !
[RI
GHT.1 CR
IGHT] "
110
PR .1 NT " C RV
S3
[RIGHI I
[RIGHI"
] 1
[RIGHT
;j [righi j
[R
IGHT] !
[ R I GHT
] [R
IGHT]
! [RI GHT]
CR I GITI J "
120
PR I NT " [ RV
SI
[RI GHT!
[RI GHT
3 !
[RIGHI
] [RIGHI!
[R
IGHT] 1
[RIGHI
] [R
IGHT]
! [RI GHT]
1" p
!.. 1 •.
IGHTJ "
130
PR I NT " [ R V
II
sì
! ! ! 1
! ! 1
1 !
! 1 !
1 40
PR I ni " r i:v
H
S3Q
] m s F ! R ;
T ! V ! U ! I
! 0 ! P
! 0 1 * 1 t
150
PR I NT " -SP
OZI
0 PER Fi
GGULU U
POL
IRONIE
n
69
160 FRI NT ""FI
II
ir *:? •••
! I
Otri r "7 T i*
!_ I — L_ k*. j. •„
n.iE oTiftypi
170 PRINT"'F2,F4,F6,F8" FORMA D'ONDA "
180 FRI NT "ATTENDERE PREGO "
190 3=54272 : DIN FC26> : D I M K<255> : Pl*l
195 'v'L=54296 : POKE VL.. 15
280 FOR 1=0 TO 21 : POKE S+I,@:NEXT
210 FI =7040 : FOR 1 = 1 TO 26 : FC27-I >=F1*5. 8
+30 : F 1 =F 1 /2 T< 1 / 1 2 > : NE/T
220 K$=" Q2W3ER5T6V7U I 9OOP0~*£ t"
230 FOR 1 = 1 TO LEN < K$> : K ( ASC < M I B# < K£ ,1,1
>>>=! =NEXTI
240 PR I NT " [ UP 3
250 AT= 1 : DE=9 : SU* 1 5 ■ RE=9 : SV=SU* 1 6+RE : AV=
AT*16'+DE WV= 1 6 : W=0 : M=1 : 0C=4 : HB=256 : Z
=0
260 FOR 1=0 TO 2: POKE S+5+I*7, AT*16+BE : P
OKE S+6+ I *7 , SU* 1 6+RE
270 POKE 8+2+1*7,4000 AND 255 : POKE S+I*7
, 4000/256 : NE/T
300 GET Ai’: if AT=" " THEN 300
3 1 0 FR=F < K < ASC < A$ > > > /fi •' T = V*7 : CR=S+T+4 : I F
FR=0 THEN 500
320 POKE S+6+T..0
325 POKE S+5+T, 0
340 POKE S+t'/fR-HB* I NT < FR/HB >
350 POKE S+l+T, FR/HB
360 POKE S+6+T,SV
365 POKE S+5+T , AV
370 POKE CR , W V+ 1 : FOR J=1 TO 58*AT : NEZTJ
375 POKE CR , WV
380 IF P=1 THEN V=V+1 : IF V=3 THEN V=0
508 IF Hi'-" CTF1 .1" THEN M=1 : 0C=4 : GOTO 300
510 IF fl$=" CTF3] " THEN M=2 •' 0C=3 : GOTO 300
70
529
TP
,s
r
L
TF53 "
THEH M“4 : oc
=2 : GOTO 30O
538
T F
Fj$= “
r
s..
TF7J '*
THEH M=8 •' OC
= 1 : GOTO 300
540
IF
H*~"
r
T'FP' '! "
THEN W=0 : wv
= 1 6 : GOTO 30
0
558
t cr
X i
H*“ "
r
TF4 j »
Tj-IPM f;.S::r | : j.«J , v l
=32 : GOTO 30
0
560
IF
0
r
TP6 1 M
THEN M~2 : WV
=64 : GOTO 30
579
IF
fì$="
!
TF83 "
THEH W=3 : WV
-128 : GOTO 3
00
5o0
IF
fì$="
! p= 1 --P : GOTO
300
530
IF
fl$="
r
f;| FhP '!
" THEH 280
600
GO
IO 30
0
500
RR
I HT " p
p
EMI UH
1 TASTO "
810
GÈ
T fì$ :
T
F Af-"
“ THEN 810
82@
p j ; ;>
I NThT
i
; ppTf |p
:N
71
* *
5. Numeri
* *
Numeri casuali: distribuzione
Vi siete mai domandati quanto siano effet-
tivamente casuali i numeri prodotti da un
generatore RND?
Il seguente programma genera 100 numeri ca-
suali tra 0 e 9 e conta quante volte viene
ripetuto ogni valore.
Alla fine viene mostrato un quadro riassun-
tivo dei risultati.
1 @ PR I NT " [ CLEfìR 3 " : X=RNB '.'.-TI >
20 FOR L--1 TO 100
30 H= I NT < 1 0*RND < 1 > >
40 IF N=0 THEN R=A+1
50 IF N=1 THEN B=B+1
60 IF N-2 THEN C=C+1
70 IF N--3 THEN D=D+1
80 IF N=4 THEN E=E+1
90 IF N=5 THEN F=F+1
100 IF N=6 THEN G=G+1
110 IF N~7 THEN H=H+1
120 IF N=8 THEN 1=1+1
130 IF N=9 THEN ,T=J+1
140 FRI NT "STO CALCOLANDO"
150 NEXTL
160 PRINT" CCLEflR] " •' REM PULIZIA SCHERMO
72
170 PR I NT " 0 " .. fl
180 PR I UT " 1 " .■ B
190 PR I NT " 2 " .■ C
200 PRIMI "3" .• D
210 PRIMI" 4", E
220 FRI MI "5" • F'
230 PRIMI "6", 6
240 PRIMI"?". H
250 PRIMI "8" .« I
260 PRIMI "9", J
270 PR I MI : PR I MT •' PR I NT
280 INPUT "PER PROSEGUIRE PREMI RETURN"
K*290CLR : GOTO 10
73
Min/max fra numeri casuali
E' importante poter ordinare un gruppo di
numeri e stabilire quali siano i valori
maggiori e quelli minori.
Questa funzione e' svolta dal seguente
progrsmma.
11 generatore di numeri casuali si trova alla
linea 30.
Il range va da 0 a 999.
La linea 50 determina il numero piu' basso,
mentre la linea 60 il piu' alto della serie.
1 0 PR I NT " l CLEflR 3 " : X-RNB < -T I >
20 POR L=0 IO 99
30 N= I NT < 1 000if:RHB < 1 > >
40 IF L=0 THEN LN=N : HH=H
50 IF NCLN THEN LN=N
60 -IF N>HH THEN HN*N
70 FRI NT "STO SCEGLIENDO"
30 NEXTL
90 PR I NT " C CLEflR 3 " ; REM PUL I Z I fi SCHERMO
1 00 PR I NT " NUMERO BASSO : " , LN
1 1 0 PR I NT " NUMERO ALTO : " , HN
1 20 PR I NT : PR I NT : PR I NT : PR I NT
130 FRI NT "PER AVERNE UN ALTRO"
140 PRI NT "PREMI UN TASTO QUALSIASI"
74
THEN 150
150 GET K$
160 IF «*=""
170 CLR
180 GOTO 10
75
Numeri casuali: media
Il programma seguente genera 100 numeri
casuali e la loro somma.
Poi calcola la media aritmetica dei 100
numeri •
Il valore ottenuto risulta essere ancora un
numero casuale di grande utilità' •
Per far ripartire il programma, premere il
tasto RETURN.
10
FRI NT"
CCLEflR]" : X==F
NTK
~TI )
20
POR L=
0 TO 99
30
N= I NT
1 0*RND < 1 > >
40
NT=HT+
N
50
FRI NT"
STO FACENDO
LR
MEDIA"
60
NEKTL
70
FRI NT"
[ OLEARI" •' REM
PULIZIA
SCHERMO
80
RV=NT/
1 00
90
FRI NT"
IL TOTALE DI
10
0 H
1 00
FRI NT"
NUMERI A GAS
0"
110
FRI NT"
DA 0 A 9"
120
FRI NT"
E " ; NT
130
FRI NT
1 40
FRI NT"
LA MEDIA E-"
A'v
150
FRI NT:
FRI NT : FRI NT :
FRI NT
160
INPUT
"PER PROSEGL
IRE
PREMI F
ÌETURN" :
K$170C
LR : GOTO 10
76
Numero medio di una serie
Ecco come trovare il numero centrale di
serie di numeri.
Inserite una serie di numeri e uno zero
l'ultimo numero.
Le linee 40 e 70 selezionano il numero
alto e il piu' basso della serie.
La linea 90 il valore medio della serie.
10 PRIMI" C OLEARI REM PULIZIA SCHERMO
20 INPUT "DAMMI UN NUMERO" ; 2
30 IF 2=0 THEN 90
40 N=N=+1
50 IF N=1 THEN H=2 • L=2
60 IF 2<L THEN L=Z
70 IF 2>H THEN H=2
80 GOTO 20
90 M=L+< <H-L>/2>
100 PR I NT- PRIMI : PRIMI
110 PR I NT " NUMERO A META'" DELLA SERIE: ";M
120 PRIMI: PRIMI -PRIMI
130 INPUT "PER PROSEGUIRE PREMI RETURN".;
KT140CLR GOTO 10
una
dopo
piu'
77
Dal percentuale al decimale
I depositi, gli interessi, le imposte e gli
altri programmi finanziari diventano piu'
pratici se non dovete fare conversioni
numeriche a mente.
Per esempio, se sapete che il vostro conto
bancario vi frutta un'interesse pari all '8*,
la via piu' breve per conoscere l'ammontare
finale e' di inserire un 8 e lasciare al
computer il compito di eseguire i conti.
Inserite nel programma seguente, ad esempio,
il valore 2.500.000 e digitate 6 alla
richiesta della percentuale.
II computer risponderà' 2.650.000.
10
PRIMI
" [CLEfìR] " :
REM
PULIZIA
SCHERMO
20
INPUT
"PREZZO £
" , P
30
INPUT
"TASSA DI
VENDITA
Z" E
49
T =0 . 0
1#R
50
S=T*P
: B=P+S
60
S*=STR*<S> :B$=S
TE* CE
70
S*=RI
3HTTCS*, CLENCS4
If
R 1 6HT* C
B*, CI-
EN < B* > - 1 > >
89
PRINI
"C CLEfìR]"
90
PR I NT
" T fìSSfì DI
VENDITA" .
"£";E
;*
100
PRIHT
"CONTO TOTALE" ,
il £ *•
B*
78
110 PRINT : FRI NT : FRI NT
120 INPUT " PER PROSEGUIRE PREMI RETURN":
KT130CLR GOTO 10
■
H
m
!V
rs
Si
■
Kt
»
ii
E
»
r|
aS
■K
P
■
1
li
il
SI
D
■
E
il
te
a»
gg
II
0
E
r
ab
□
u
a
s
2:
2
E
79
Percentuali
Di aolito e' piu' pratico introdurre
percentuali eapresae in punti per 100
piuttosto che doverle convertire in decimali.
Naturalmente il computer per lavorare ha
bisogno dei valori decimali.
Questo programma trasforma appunto dei valori
percentuali in decimali.
10 PRINT" [OLEARI " :CLR
29 INPUT "PERCENTUALE: ";P
30 D=0.01*P
40 PR I NT " IiEC I MRLE " ; D
50 PRINT : PRINT : PRINT
60 CLR : GOTO 20
70 PRINT: PRINT -PRINT
80 PRINT" VALORI INSERITI: " ; T
80 PRINT "PRINCIPALE ";fì
1 80 PR I NT " VRR I RNZR : " ; V
110 PRINT "DEVI AZIONE STANDARD: ";D
120 PRINT: PRINT: PRINT
130 PRINT "PREMI UN TASTO PER CONTINUARE"
140 GET Ht ; IF H$="" THEN 140
150 CLR : GOTO 10
se
Invertitore di numeri
Dai al tuo conputer un qualaiasi numero di
tre cifre e come risultato lo rivedrete
capovolto.
Per esempio 234 vi verrà' trasformato in 432.
10 F'RINT" [CLERR] " : CLR
28 F'RINT" INTODUCI UH NUMERO DI 3 CIFRE"
30 INPUT N
40 IF NC100 OR N>999 THEN PRINT"C2 UP3"
: GOTO 30
50 fì=INT <M/100>
60 B= I NT < 1 0* C < N/ 1 00 > -R > )
70 C=VRL < R I GHT $ < STRT C N > , 1 ) >
30 F'R I NT •• F'R I NTR I GHT $ ( STR$ < C > , 1 > ; R I GHT $ C
STRT < E ) , 1 > R I GHT $ < STR$ *:] fi ) , 1 >
90 F'RINT : F'RINT : PRINT
100 CLR : GOTO 20
81
Scarta l’intero
Si consideri il numero 123,456 e si voglie
lsvorare solo sulle porzione a destra della
virgola.
Il programma seguente conserverà' solo la
parte .456, scartando 123.
In pratica tronca dei numeri decimali,
conservandone solo la porzione frazionaria.
1 @ PR I NT " C CLERR ] " : REM PUL I Z I Fi SCHERMO
20 PR I NT " DAMMI I UH NUMERO"
30 INPUT "CON UNA CIFRA DECIMALE" ;N
40 n=n~int-::n>
50 PRINT
60 PRINT" LA PORZIONE"
70 PRINT "FRAZIONALE DI"
so printn; "E-";k
90 PRINT: PRINT: PRINT
100 INPUT "PER PROSEGIRE PREMI RETURN"; K
$
110 CLR : GOTO 10
82
Arrotondamenti
La tecnica per arrotondare un numero e' sem-
plice.
Questo programma che ° può' operare isolata-
mente o nel corpo di un programma piu' vasto,
arrotonda un numero decimale all'intero piu'
vicino.
Ci sono due vie per arrotondare un numero.
Una dice:
M Se il numero decimale e' maggiore di 5,
arrotonda all'intero superiore”.
Il che significa che 0.5 arrotonda per di-
fetto.
La seconda e' :
M Per ogni numero minore di 5, arrotonda per
difetto” .
In questo caso 0.5 arrotonda per eccesso.
La prima parte del programma segue la prima
teoria, mentre la seconda arrotonda per di-
fetto a meno di 5.
1 0 PR I NT M II CLEAR 1 " : REM PUL I Z I fi SCHERMO
20 PRI NT "DAMMI UN NUMERO"
30 PRINT n Dfì HPPRUSS I MARE ALL' INTERO 11
40 INPUT N
50 IF N> I NT < N > THEN 88
83
60 R=N
70 GOTO 130
80 n=N-IHT<M>
90 IF 10-0.5 THEN 120
100 R= I NT < H >
110 GOTO 130
120 R- 1 NT < H > •+• 1
130 FRI NT" t OLEARI "
140 PRINTN
150 FRI NT "E APPROSSIMATO A"
160 PRINTR
170 FRI NT •FRI NT •PRIMI
180 CLR : GOTO 28
84
Arrotondamento a 2 cifre
E ' possìbile arrotondare al centesimo piu'
vicino, cioè' due cifre dopo la vìrgola.
Ecco come:
10 PRINT" CCLEAR3 " : REM PULIZIA SCHERMO
20 PRINT "DAMMI UH NUMERO"
30 FRI NT "CON PIU" DI"
40 INPUT "DUE CIFRE DECIMALI" ;N
58 N$«STR$<N>
60 N$=R I GHT $ ( NT , < LEN ( NT > - 1 > >
70 R= I NT < 1 00*N+0 . 5 > / 1 00
80 RT=STRT<R>
90 RT=R I GHT T ( R $ , < LEN < R$ > - 1 > >
100 PRINT" CCLERRJ "
110 PRINTN; "SI APPROSSIMA A"
120 PRINTR
130 PRINT: PRINT" 0"
1 40* PR I NT : PR I NT " $ " ; NT " D I VENTA "
150 PRINT "T" : R$
160 PRINT: FRI NT -PRINT
170 INPUT "PREMI RETURN PER PROSEGUIRE";
KT180CLR : GOT 0 10
8S
Deviazione standard
Ecco co»* determinare qualsiasi deviazione
standard relativa ad una certa media.
Per uscire dal proraama occorre inserire il
vslore 999999999.
10 PRINT"[CLERR]" ; CLR
20 INPUT "VALORE : ";X
30 IF X ; =999999999 THEN 60
46 T=T+x’s=S+XT2^H=H+l
59 GOTO 20
60 A=T/N : V=S/N-R T2 : D-SQR < V >
70 PR I NT :RR INTERRI NT
80 PRI NT "VALORI INSERITI •' MT
90 PRI NT "MEDIA: ”;R
100 PRI NT "VARIANZA: " ; V
110 PRI NT "DEVI AZIONE STANDARD: ",D
120 PRI NT: PRI NT-’ PRI NT
130 PRI NT "PREMI UN TASTO PER CONTINUARE"
140 GET H$:IF H$= " " THEN 140
150 CLR : GOTO 10
88
Funzioni logiche
Puoi far fare al computer coae basate sulla
sua decisione che qualcosa possa esistere.
Questo primo programma stampa il valore di C
solo se B esiste.
La decisione e' nella linea 40.
La macchina stampa B solo se non e' eguale a
0 .
A partire dalla linea 100 si ha un secondo
programma il quale visualizza i risultati
delle prime linee solo se risulta "vero" uno
o entrambi i confronti.
0 REM PRIMO ESEMPIO
19 PRINT" CCLEfìR] " : CLR
20 B=10
30 C= 1 0$B
40 IF B THEN PRINTC
99 END
100 REM SECONDO ESEMPIO
110 PR I NT " C CLEFlR 3 " •' CLR
1 cjy B‘= b+S ) y 3*4
130 C= (. 5+2 > > < 9+2 >
140 IF B THEN PRINT"B OKA't'"
150 IF C THEN PRINT"C OKfìV"
200 END
87
Integrali
Queato utile programma permette il calcolo di
integrali anche molto compleaai.
Di volta in volta dovrete inaerire nella
linea apecificata dal programma la funzione
di cui vorrete atudiare gli intervalli di
integrazione .
8 POKE 53280 , 6 : POKE 5328 1,0: PR I NT " C VER
DE23 "
150 H=2
160 V-221
200 PR I NTCHR* U 47 > ; " I NTEFRALE CftLCOLflTO
CON LA FORMULA " : PR I HTSPC < 7 > " D I S I MPS
OH"
205 FRI NT ; PRINT
210 PR I NT CHR$ <176 > ; : F OR J=1 TO 11
220 PR I NTCHR* < 1 92 > ; : .NEXT : PR I NT " ATTENZ I OH
E"; : F OR J=1 TO 11
230 PR I NTCHRS < 1 92 > ; : NEXT : PR I NTCHR* C 1 74 > :
GOSUE 290 : PR I NTCHR* ( V > ;
240 PRINT" LA SUBROUTINE ALLA LINEA
" ; CHRf < V > : GOSUE 290
250 PR I NT CHR$ < V > ; " 5000-5999 DEFI
N I SCE " CHR* < V > : GOSUE 290
260 PRINTCHRT(V>, " V COME FUNZIONE
88
DI X " ; CHR$<V> : GOSUE 290
278 PR I NTCHR$ < 1 73 > : FOR J= 1 TQ 32 : PR I NTC
HR$< 192) ; : NEXT • PRINTCHR$< 189)
280 GOTO 300
290 PR I NTCHRf < V > ; SPC < 32 > CHR* < y > : RETURN
300 FRI NT': INPUT "LIMITE INFERI ORE. DI X" ;
L
310 FRI NT: INPUT "LIMITE SUPERIORE DI X";
IJ
360 PR I NT " N . SEZ I OH I" , " I NTEGRRLE "
370 FOR J= 1 TO 10 : PR I NTCHR* < 1 96 ) ; •' NEXT : P
RINTSPC(10> :FOR J”1 TO 8
380 PR I NTCHR* < 1 96 > : NEXT : PR I NT
400 DX= < U-L > /H : T~0
4 1 0 X~L : GOSUE 5008 ; T=T+V
420 X=U : GOSUE 5000 : T=T+V
450 M~N/2 : Z~0
460 FOR J*1 TO M
470 X=L +DX# < 2* J~ 1 > ■ GOSUE 5000 : Z=Z+V '
480 NEXT : T=T+4*Z
500 M-~M- 1 : IF M~0 THEN 600
510 2=0 : FOR J=1 TO M
520 X=L+DX$2*J : GOSUE 5000 : Z = Z+V
530 NEXT : T =T+2$Z
600 fì=DX*T/3
610 PRINTN,SPC<8>;R
620 N--N:+2
63@ GOTO 400
4970 REM I SERI SCI LR SUBROUTINE Fi 5000
4980 REM
4990 REM
5000 REM V=F ( X > Vfl QUI
5999 RETURN
09
Sistemi lineari
Come tutti i computer anche il vostro
Commodore 64 ha delle capacita' matematiche
non indifferenti.
Ecco come sfuttarle nella risoluzione di un
sistema lineare di equazioni ad —n—
incognite.
>00 RR I NT " C CLERR 3 C DOWN 3
RISOLUZIONE
201
000
301
310
3P0
330
340
350
«I ; pp J kjT H ...... - 11
FRI MI"' D I S I STEN I " : PR I NT "
FRI NT"
INT"
D I EQUfìZ I UNI L. I NEAR I " : PR
FRI NT" [2 DOWN IDI QUANTE EQUAZIONI SI
COMPONE IL SISTEMA"
INPUT N
I F N< 1 THEN PR I NT " Il DOWN 3 1 MPOSS I E I LE !
RIPETI ! " : GOTO 301
IF N>15 THEN FRI NT" C DOWN IMI DISPIACE
, NON ACCETTO PIU DI QUINDICIEQUAZIO
NI " ■ FND
DIM A ( N , N > .• R < N ) .. V < N >
PR I NT " C DOWN 3 LE " ; N ; " I NCOGN I TE "
PR I NT " SARANNO I ND I C ATE CON X 1 . . . X " ; M
IDT<STRT(N),2, IO)
90
'360
370
Rfi
390
400
410
420
438
500
5 10
520
GOSUB 900 : FOR J=1 ,TO H
PR I NT " SCR I V 1 I PfiRfìME TR I DELL ' EQUftZ I
.ONE"; J
FRINÌ : FOR K=1 IO N
PR I NT " COEFF I GENTE D I X " ; M I D* < STR* < K )
.•2/10)
INPUT fi< J, K > : PRIMI NEXT
I NF'UT " TERM I NE NOTO " ; R < J )
GOSUB 9O0 : NEXT
GOSUB 20O0
PR I NT " Lft SOLUZ I ONE • E " " •' PR I NT
FOR J=1 TO H
PR I NT " X " ; M I B$ < STRI < J > ,2, 1 0 > ; " = " ; V < J
530 NEXT : END
900 F'RINT ' PRINT" "
910 PR I NT : RETURN
2080 I F N= 1 THEN V < 1 > =R < 1 > • 'Fi < 1 , 1 > : RETURN
2010 FOR K"1 TO N~1
2020 I =K+ 1
2030 L=K
2040 I F BBS < fi < I .• K > > >fiBS < fi < L .• K > > THEN L= I
2050 IF KN THEN 1*1 + 1 : GOTO 2840
2060 IF L=K THEN 2100
2070 FOR J=K TO N : Q=fi < K .* J > : fi < K .. J > -fi < L J > '
2088 fi < L .. J > =Q : NEXT
2090 Q*R ( K ) : R ( K ) *R L ) : R L ) *Q
2100 I=K+1
2105 IF fi <K, 10*0 THEN PRINT"C"E"'UN ERRORE
; I L S I SIENA E t RVS 3 1 MPOSS I B I LE t RVOF
i : “
i J
1
06
i
F fi
CK/K)
~0
THEN
END
1
10
i\
=FK
INO/
FKK
, ) : I
fi< I !<
■>
0
1
28
F
OR
J=K+ 1
TO
N : fi
<1, JI
<1/ J)
)
^ ne;
NT
1
30
R
(I)
=R<:i>
-Q#
ROO
•IF I
•_i i
THEN
91
oro 2110
2140
NEXT
•» a tr
ull’r J
IF 8 < M .. N
>=0 T
HEN
PR:INT"C-E'!JN
ERRORE
; IL SIS
jr "j »?
TEMPI
E IR
VS 3 I MPOSS IBI
LECRVOF
2146
ÌF 8 < N , N
>=@ T
NEH
END
2150
V<N>=R<N
•}
)/8(N
,H> :
POR I =M- 1 TO
1 STEP
2 1 60
Q=0 ' FQR '
J--I + 1
TO
N : Q~Q+H< I .■ J>
( j y
■y •! 7 r-i
V ( J ) - (."•
i y -q >
/8 < I
, I ) : NEKT : NEX
T '
V 1 Ofi
l*w •••
RETURN
92
Simulatore di calcolatrice RPN
Il vostro computer può' essere predisposto
per lsvorare come una calcolatrice
funzionante col sistema RPN (11 termine RPN
non e' altro che 1' acronimo di Notazione
Polacca Inversa) .
Per eseguire un calcolo digitate un numero
seguito lmmadlatamente dal simbolo di un
operatore aritmetico.
Il tasto STOP pone fine al programma.
1 0 PR I NT " C CLE'fiR 3 " : REM PUL I Z I fi SCHERMO
20 N*="" : X$=“"
25 FRINII*
30 GEI N*
35 IF N*=" " THEN 30
40 IF FlSC (. N* > <42 OR FlSC<N*>>57 THEN 30
50 IF FlSC<N*>=46 OR FISCO!* »47 THEN K*=
X*+N* : GOTO 30
60 IF RSC*::N*>=42 THEN 1100
65 IF FISCO!* >=43 THEN 1200
70 IF RSC < N* > =45 THEN 1300
80 IF FISCO!* >=47 THEN 1400
90 GOTO 10
1100 R=VFlL(K*> : T=T*X
1120 GOTO 1420
93
1200 X=VfìL<X*> : T=T+X
1220 GOTO 1420
1 300 X-v'AL < Xf > : T=T-X
1320 GOTO 1428
1 400 X= VAL < X* > : T-T/X
1 420 . T $=STR$ ( T >
1430 GOTO 10
M
Divisione in fattori
Questo programma trova tutti i fattori primi
in cui risulta divisibile un numero
qualunque.
Può' essere usato come sottoprocedura di un
programma piu' lungo.
ZI numero di fattori individuali e' limitato
dalla istruzione DIM.
10 PRINT" C OLEARI " REM PULIZIA SCHÉRMO
28 DIM GK650)
30 INPUT "NUMERO" ;N
40 FOR L=2 TO N/2
50 M=N/L
60 IF M=INTCM> THEN Q < L > =M
70 NE/TL
80 PR I NT : PR I NT " I F ATTOR I SONO : “
90 FOR L=1 TO N/2
100 IF Q<L)>1 THEN PRINTGKL) ■' GOTO 120
110 Z=Z=+1
120 NEXTL
130 IF N=1 THEN PRINT "NESSUNO" : GOTO 150
140 IF 2= I NT < N/2) THEN PRINT" NESSUNO"
95
Da esadecimale in decimale
I primi calcolatori inventati dall'uomo "ma-
sticavano" aolo numeri binari .
Noi siamo abituati a contare in base dieci.
Oggi la tecnologia del silicio ha general-
mente adottato la base 16 per velocizzare i
calcoli meccanici.
Questo programma vi permetterà' di acqui-
stare familiarità' con i numeri esadecimali,
trasformandoli in numeri decimali, per noi di
piu' immediata comprensione.
1 0 F2=4096 : F3~256 : F4~ 1 6
2© PR I NT " [ CLEAR 3 t RVS 3 COHVERS I OHE DB ESfì
DECIMALE IH DECIMALE "
30 INPUT YT'IF LEM < V$ ) >4 THEN RUM
35 IF LEN< V$><4 THEN PRI NT" CUPI AGGIUNGI
GLI ZERI PER L.E CIFRE NON SIGN
I F I CAT I VE " : GOTO 2000
40 A$~LEFT$ < V$ , 1 > ^ KT--AT : GOSUE 1 000
50 A=S*F2
60 Ef =M I D* < V$ , 2 , 1 > : • GOSUE 1 000
7© B“S#F3
80 Cf~M I D$ < Y$ , 3 , 1 ;• : H$=C$ : GOSUE 1 000
90 C=S*F4
1 00 D*=R I GHTT < V$ , 1 > • M*=D$ : GOSUE 1 000
96
ii0 n=s
1 28 T=R+B+C+D : PR I NT " C IJP 3 " .. T
130 GET ZflF Z$="" THEN 130
150 GOTO 30
1000 IF X*="H" THEN S= 10 -RETURN
1010 IF X$="B" THEN S=1 1 : RETURN
1020 IF X*="C" THEN S= 1 2 : RETURN
1030 IF K$=" D" THEN S*13= RETURN
1040 IF X$="E" THEN S“ 1 4 : RETURN
1050 IF X$="F" THEN S=15 : RETURN
1060 S~VfìL(Xt>
1070 RETURN
2000 FOR GG=1 TO 2000 : NEXT : RIJN
97
Numeri caratteri
Questo breve programma mostra il valore ASCII
per ogni carattere della tastiera, accanto al
carattere che rappresenta.
Sarai rapidamente in grado di dire quale
carattere corrisponda ogni numero del codice
ASCII.
Nella linea 40 c'e # un temporizzatore per
permettere una lettura a tempo delle
informazioni .
Agendo sul numero 400 della linea 40 e'
possibile abbreviare o allungare il tempo di
permanenza delle immagini sullo schermo.
10 F'RINT" CCLEflR] "
28 FOR H=33 TO 127
30 FRI HTN , CHR$ < N > : PR I NT
40 FOR Tal TO 400 : HEXT T
50 IF N=255 THEN 20
60 NEXT N
70 FOR N= 161 TO 255
80 GOTO 30
98
T rova il numero
Eccolo!
Da qui, negli anni settanta, comincio'' la
programmazione dei microcomputer.
Il primo gioco ad eaaere giocato fu una
routine di ricerca numerica con informazioni
troppo grande/troppo piccolo.
Il computer aeleziona un numero aegreto.
Tu devi indovinarlo.
Lo schermo ti informa se il numero che stai
provando e' troppo elevato, troppo basso o se
e' proprio quello giusto.
Ecco come funziona:
la linea 100 genera un numero casuale tra
zero e 1000 <11 numero segreto) e lo
immagazzina.
La linea 210 ti chede di indovinarlo.
Le linee 300-310 decidono se l'hai trovato o
meno, ed infine la linea 220 tiene conto dei
numeri dei tentativi .
10 PRIHT" CCLEfìR] " ; REM PULISCE SCHERMO
28 Z=RNIK~TI>
30 T=0
1 00 R= I NT < 1 000#RND < 1 > >
200 PRIHT "HO UN NUMERO SEGRETO E TU DEVI
M
SCOPRIRLO"
210 INPUT "INSERISCI UN NO. ";B
220 T=T+1
230 PR I NT : PR I NT = PRI NT "TENTATIVO NO. "JT
300 IF B>R THEN F'RINT : INPUT "TROPPO ALTO
, RITENTA" ; B : GOTO 220
3Ì0 IF BCR THEN PRI NT: INPUT "TROPPO BASS
0 , R I TENTA ";B: GOTO 220
400 F'RINT" E OLEARI "
410 F'RINT" SI, HAI INDOVINATO ! "
420 F'RINTR; "E' IL NUMERO"
430 FRI NT "L'HAI SCOPERTO"
440 F'RINT" IN 'ST.:" TENTATIVI"
450 FOR L= 1 TO 100 : F'RINT : NEXTL
460 CLR
470 GOTO 30
100
* *
6. Gestionali
* *
Aumento del valore monetario
Questa sezione del libro include una serie di
programmi relativi alla gestione della
contabilita' domestica e spicciola.
Questo primo programma mostra come cresce il
valore di un investimento ad un certo tasso
di interesse annuo, calcolato mensilmente.
Il primo valore da inserire e' l'ammontare
iniziale dell'investimento.
Successivamente viene richiesto il tasso di
interesse annuo e il numero di mesi da
visualizzare.
La linea 10 cancella lo schermo; le linee
.dalla 20 alla 40 acquiaiscono i dati, mentre
dalla 50 alla 90 vengono prodotti i
risultati .
La linea 55 genera un rallentamento della
visualizzazione per permettere una piu'
comoda lettura dei dati.
10 FRI NT" [OLEARI " : REM PULÌ ZI fi SCHERMO
20 INPUT "CAPITALE £";P
30 INPUT "INTERESSE ANNUO Z";R
40 INPUT "NUMERO DEI MESI’SM
50 PR I NT "C OLEARI" : REM PULIZIA SCHERMO
60 PR I NT " MESE " ; SPC < ? > ; " E I LANC 1 0 "
70 FOR 12=1 TO M
80 I =< P* < 0 . 0 1 #R > / 1 2
90 P=P+1
1 @0 PP= I NT •:] 1 00#P+0 . 5 > 7 1 00
110 PRIHTQ,PP
120 FOR T=1 TO 400=NEXTT
130 NEKTQ
140 FRI NT : PRINT
150 INPUT "PER PROSEGUIRE PREMI RETURN"
K$
160 CLR ; GOTO 10
102
Differenza fra due date
Quanti giorni ci sono da oggi al primo
gennaio del 2000?
Chiedetelo al vostro computer e lui aapra'
dirvelo con esattezza, e velocemente!
1 9 PR I NT " t CLEflR ] [' 2 DOWN ] C RVS 1 ENUMERO D I
GIORNI IRÒ 2 DATE ( GG .• MM .• A A > [ RVOFF 3
20 FRINÌ
30 FRI NT "PRIMO DATA"
40 INPUT Di, MI, VI
45 FRI NT
50 FRI NT "SECONDA DATA"
60 INPUT D2,M2,V2
70 M=M1
80 D=D1
90 V=V1
100 GOSUB 230
1 1 0 N=A
120 M=M2
130 D=D2
140 V=V2
150 GOSUB 230
160 N=A-N
165 FRINÌ'
103
170
PRI NT" DIFFERENZA = "
;n;" G
IORNI "
1 80
FRI NT
198
FRI NT "ALTRI DATI CSI
/HO)".;
200
INPUT X$
210
IF X*~" SI" THEN 20
220
GOTO 460
230
ON MGQTO 260,280,260
,340,2
60 .
340, 260
, 260 , 340 , 260 , 340 , 260
240
FRI NT "DATA IRREALE"
250
RETURN
260
IF D>31 THEN 240
270
GOTO 350
280
I F V/40 1 NT C V/4 > THEN 3 1 0
290
I F V/400- 1 NT < V/400 )
THEN 3
20
300
IF V/180OINTCV/100)
THEN
320
310
IF D>28 THEN 240
320
IF B>29 THEN- 240
330
GOTO 350
340
IF B>3@ THEN 230
350
DAT A 0 , 3 1 , 59 , 90 , 1 20 ,
151, 18
1,2
12
351
DATA 243 , 273 , 304 , 334
360
RESTORE
36 1
FOR Q=1 TO M
362
READ A
363
NEXTQ
380
A=A+V$365+ 1 NT C V/4 > +D+ 1 - 1 NT
CV/
100)+ IN
TC V/400 >
390
IF I NT < V/4 > O V/4 THEN 450
4 1 0
IF V/40O= I NT < V/400 >
THEN 4
30
420
IF V/ 1 00= I NT < V/ 1 00 )
THEN 4
40
430
IF M>2 THEN 450
440
A-A--1 .
456
RETURN
460
END
104
Giorno della settimana
Che giorno della settimana era il 15 ottobre
del 1943? Oppure in che giorno della
settimana e' nato un vostro piu' caro amico?
La risposta alla velocita' del vostro fedele
Commodore 64.
1 0 PR I NT 11 [ CL.ERR ] [ 2 DOWN 3 il RVS 3 G I ORNO DEL
Lft -.SETTI MONA [RVQFF 3 "
20 FRI NT
30 PR I N T ” < I NSER I RE 9 , 9 , 9 PER TERM I MARE >
II
35 PR I NT
40 PRI NT" GIORNO.. MESE, ANNO"
50 INPUT D , M , V
60 IF MO0 THEN 100
70 IF DO 9 THEN 199
80 IF V<>9 THEN 199
99 GOTO 369
109 IF M>2 THEN 130
110 M=M+ 1 2
120 V=V-1
130 N=D+2*M+ 1 NT < .6*<M+ 1 ) ) +V+ 1 NT < V/4 > - 1 NT
< V/ 1 00 > + 1 NT ( V/499 > +2
1 40 N= I NT < < N/7 I NT < N/7 > ) *7+ . 5 >
159 IF N>9 THEN 189
105
1 60 PR I NT " r DQWN 1 [ RVS .1 DOMEN I Cfì C RVGFF 3 "
3.70 GOTO 340
180 IF N> 1 THEH 210
1 90 PR I NT " t DOWN 3 1 RVS 3 LUNE!' I - C RVOFF 3 "
200 GOTO 340
210 IF N>2 THEN 240
220 PR I NT " t DOWN 3 1 RVS 3 MERTÉD I •" C RVOFF 3 "
230 GOTO 340
240 IF N>3 THEH 270
250 PR I NT " [ DOWN 3 C RVS 3 MERCOLED I E RVOFF 3 "
260 GOTO 340
270 IF N>4 THEN 300
280 PR I NT " C DOWN 3 C RVS 3 G I OVED I " C RVOFF 3 "
290 GOTO 340
300 IF N>5 THEN 330
3 1 0 PR I NT " [ DOWN 3 C RVS 3 VENERO I ' C RVOFF 3 "
320 GOTO 340
330 PR I NT " r DOWN 3 [ RVS 3 SRBflTO i RVOFF 3 "
340 PRINT
350 GOTO 49
360 END
106
Comparazione di introiti
Questo semplice programma raccoglie i dati
relativi agli introiti mensili della vostra
attività' e li visualizza su un grafico di
immediata interpretazione, che pone in
evidenza come differisca un mese dall'altro.
Le linee dalla 100 alla 160 acquisiscono i
dati; le linee dalla 300 alla 360 creano il
grafico .
La lunghezza massima delle barre orizzontali
del grafico e' di 17 elementi.
1 0 PR I NT " !I CLEBR 3 " = REM PUL I Z I fi SCHERMO
2@ DIM CR < 6 >
160 POR L=1 IO 6
110 PRIWT" ENTRATE DI CASSA "
120 PR I NT " DEL MESE" > L
130 INPUT CR ( L ')
140 IF ORCO >36' THEN PRINT" [2 UP]":G0TG
130
150 PR I NT
160 NEXT
200 PRINT" [OLEARI "
210 PRINT" [NER03 "
220 PRINT TAÉ<4>; "ENTRATE DI CASSA"
230 PRINT tAE.<3>; "(VALORI DA' 0 A 36>"
107
240 FRI NT "CROSSO]"
250 FRI NT
300 FOR T=1 TO 6
305 PRINTT;
310 IF CR<T»36 THEN FRI NT "VALORE ECCE
IVO"
320 FOR X» 1 TO CR(T)
330 IF CR ( T > >0 THEN FRI NT" CRVS'J
340 NEXTX
350 PR I NT " C RVOFF ] C DOWN 3 "
360 NEXTT
400 FOR W=1 TO 3 : FRI NT : NEXT
410 FRI NT "[BIANCO]"
420 INPUT "PREMI RETURN PER CONTINUARE
V
.439 CLR : GOTO 10
Conta pezzi
Questo programma vi consente dì contare un
certo quantitativo di merce.
Semplicemente digitando sulla tastiera un
numero alla volta.
Non e' neppure necessario premere RETURN; il
computer visualizza immediatamente il valore
totale.
I tasti utilizzabili sono quelli compresi tré
0 e 9.
1 8 PR I NT " C CLEflR 1 " '■ REM PUL IZIR SCHERMO
20 GQSUB 200
30 GEI Kf
40 IF THEN 30
50 IF K$="C" THEN T=0 : GOTO 90
60 IF FlSC < K:$ : > <48 OR flSC<K$»57 THEN 30
70 N=VRL < Kf >
80 T-T+N
90 GOSUB 200
100 PR I NT " T OTfiLE " ; T
110 GOTO 30
200 PRINT" CCLERR3 "
2 1 0 PR I NT TRE < 4 > ; " GOMMATORE "
220 FOR L=1 TO 22 : PRINT"*" ; : NE NT
230 RETURN
10 »
Inventario
Il seguente programma e' atato preparato per
eseguire l'inventarlo di 10 categorie di
prodotti .
Le categorie dei prodotti sono individuati
dai numeri da 1 a 10.
Si possono introdurre un numero indeterminato
di elementi per ogni categoria, senza con
questo dover rispettare alcun ordine
particolare.
Il valore 0 segnalerà' al computer che
l'introduzione dei dati e' terminata e
provocherà' la visualizzazione del gran
totale relativo ad ogni categoria.
La linea 25 richiede il numero della
categoria; se 0 salta alla linea 70 per il
gran totale, diversamente procede alla linea
40.
L'input del numero di categoria e'
controllato per evitare l'acquisizione di
dati non validi.
La linea 50 chiede il quantitativo di merce
per categoria.
La linea 60 attua la diramazione alle diverse
categorie.
Il programma ricicla continuamente fino alla
digitazione del valore 0.
110
INVENTARIO
20 F'R I NT " C CLEAR ] " ; REM PULIZIA SCHERMO
25 INPUT "CODICE MERCE" ;C
30 IF C~0 THEN 70
40 IF O10 THEN 20
50 INPUT "QUANTITÀ " " ; Q
60 ON CGOT 0 20 1 .• 202 .. 203 , 204 , 205 .• 206 .. 207
,208,209,210
70 F'RINT" [ CLEAR 3 "
90 GOSUB 250
100 F'R I NT : F’R I NT : F’R I NT
110 INPUT "PREMI RETURN PER CONTINUARE";
K$
120 CLR ; GOTO 20
201
J=J+Q ■' GOTO
20
202
K,=K+w • ijijTU
20
203
L=L+Q : GOTO
20
204
M=M+Q ; GOTO
20
205
N=H+Q : GOTO
20
206
r=r+q : GOTO
20
siW f
S=S+Q : GOTO
20
208
T~T+Q : GOTO
20
209
U=U+Q •' GOTO
20
210
y-y+Q : GOTO
20
220 END
250 PRI NT "MERCI"
260 PR I NT " COD I CE " , " QUANT I TA "
270 PRI NT
300 F'RINT" 1 " , J
310 F'RINT "2" , K
320 F'RINT "3" , L
330 F'RINT "4" , M
340 F'R I NT " 5 " , N
350 F'RINT "6" , R
368 F'RINT" 7" , S
ili
‘•ij co
•M
" .. u
"10" , v
o.
Ore e salari
Queste utili linee calcolano il numero totale
di ore lavorative a tempo pieno e il numero
di ore di lavoro atrordinario.
Viene fornito anche l'ammontare del pagamento
finale arrotondato all'unita'.
Il programma sa che lo straordinario inizia
dopo le 40 ore.
10 PR I NT " C CLEfìR ] "
20 FRI NT "STI PENDIO PER UN" ORR"
30 INPUT "£ ";P
40 PRI NT" NUMERO DI ORE DR RETRIBUIRE"
50 INPUT H
60 IF H>40 THEN QT*H-40 = GOTO 100
70 W=H*P
88 PRI NT" STI PENDIO LORDO"
90 PR I NT " £ " .. N
100 END
1 1 0 W= ( 40#P ) + C 0T#P# 1.5)
120 GOTO 80
113
Al penny + vicino
Questo programma e' utile per arrotondare un
numero contenente centesimi, al decimale piu'
prossimo.
Per esempio, da 151,6972 a 151,70.
Questo piccolo programma può' costituire una
utile sottoprocedura in un programma piu'
vasto .
Per fare ciò' richiamatelo con un opportuno
comando GOSUB e modificatene i numeri di
linea.
In questo caso non dimenticate di cancellare
il contenuto della linea 180 e di sostituirlo
con un RETURN.
10 FRI NT" CCLERR3 "
20 PR I NT " I NTROD I C I UN NUMERO CON PIU"' D
I DUE CIFRE DEC INFILI"
55 INPUT N
60 R=I NT < 1 004-N+0 . 5 > / 1 00
70 FRI NT
80 N*= " $ " +R I GHT ■$ < ( STRf ( N > > , < LEN « STR$ < N)
> - 1 > >
90 R*= " $ " +R I GHT $ < < STR$ ( R > > , < LEN < STR$ < R )
> - 1 > >
100 : PRINT" CCLEfiRI "
114
104 PRINTNf
110 PRINT" ARROTONDATO DIVENTA:"
115 PRINTR*
129 FRI NT: PRINT: PRINT
130 PRINT "PREMI UN TASTO PER CONTINUARE"
160 GET A* IF A|:="" THEN 160
180 CLR : GOTO 10
115
Pagamento automobile
Dovete acquietare una nuova auto?
Servitevi del vostro computer per valutare
velocemente il costo mensile di ogni modello.
Immaginate di volere una vettura da 8 milioni
e di poterne anticipare solo uno.
Decidete quindi di rateizzare il rimanente
importo in 36 mesi.
L'interesse annuale sulle automobili e' del
15 *.
Impostate i dati e otterrete il valore
dell'ammontare di ogni rata.
1 9 PR I NT " C CLEfìR ] " : REM PUL I Z I fi SCHERMO
29 GOSUB 250
2f=j p p I N T
30 PRINT "PAGAMENTO RATE AUTOMOBILE"
40 IJUSUB 250
50 PRINT
60 PRINT" PREZZO D" ACQUISTO £"
70 INPUT T
80 PRINT "AMMONTARE DELLA SOMMA RIMASTA
£"
90 INPUT R
100 PRINT "NUMERO DEI MESI"
110 INPUT N
116
129 PRI NT "INTERESSE ANNUO *i"
130 INPUT I
T50 P*<T-R>#I/< 1-1/X 1 + D IN).
1 60 PP= I NT < 1 003KP+8 . 5 ) / 1 00
170 PRI NT
180 PR I NT " PAGAMENTO £",PP
190 PRI NT
200 GOSUB 250
210 PRI NT
220 INPUT "PER PROSEGUIRE PREMI RETURN";
K*
230 CLR
240 GOTO 10
250 FOR L=1 TO 25
260 PRI NT
270 NEXTL
330 RETURN
117
Identificazione alfabetica
Il programma converte un numero compreso tra
0 e 26 nel corrispondente carattere
alfabetico.
Osservate come per il programma di
conversione si faccia uso dei comandi READ e
DATA.
10 F'RINT" CCLEAR3 "
2© PRIHT" INTRODUCI IL NUMERO DI UNfì LET
TERfl "
30 PR I NT " DEL L " ftLFRBE T 0 DA 1 fi 26"
40 INPUT N
60 IF N<1 OR N>26 THEN PRINT"C2 UP3":G0
TO 40
70 FOR L*1 TO N
80 READ R$
9@ NEXT
1 00 PR I NT •' PR I NT •• PR I NT
110 PRINT"Lfi LETTERA CORRISPONDENTE RL N
IJMERO".: N; " E" : C RVS 3 " ; R*
200 FOR L=1 TO 7 : FRI NT : NEXT
210 RESTORE
220 GOTO 20
300 DRTR A, E.- C , D , E , F , G , H , I , J , K , L , M , N , 0 ,
D n . D C T I I 1.1 V U ~f
118
Classificazione
Un gran quantitativo di numeri può' eaaere
classificato e diviso in una quantità' piu'
piccola.
Guarda il nostro esempio:
accoglie risultati e li divide in categorie
denominate A,B,C,D ed F.
Il programma presume che i singoli valori
varino in un range compreso fra 0 e 100.
La classificazione in lettere fa
corrispondere una F ai risultati da 0 a 59; D
ai valori 60-69; C ai valori 70-79; B ai
valori 80-89 e A ai punteggi dal 90 al 100.
Immetti tutti i punteggi che vuoi e infine la
lettera X per concludere il ciclo di
immissione .
Le linee 100-140 dividono tutti i punteggi
nelle categorie A-F.
Le linee 150-170 segnalano 1 valori massimi e
minimi mentre la 200 trova il valore medio e
quello piu' probabile.
1© PR I NT " C CLEAR 3 "
20 PRINT"DIGI TR UN GRUPPO HI URTI"
30 PRINT"Dfl 1 fi 100 UNO ALLA VOLTA"
40 PR I NT : PR I NT : PR I NT
119
50 PRI NT "INSERISCI X PER FINIRE"
60 FRI NT : PRI NT
80 INPUT " C RVS 3 DAT 0 C R'v'OFF ] " ; G$
85 IF G$=" " THEN 80
90 IF G*«"X"' THEN 200
100 g=val ( o$ :>
110 N=N+1
120 IF GC60 THEN F=F+1 : GOTO 150
125 IF G<70 THEN D=D+1 : GOTO 150
130 IF GC80 THEN C=C+l : GOTO 150
135 IF GC90 THEN B=B+1 : GOTO 150
140 A=A+1
150 IF N=1 THEN L=G : H=G
160 IF GCL THEN L=G
170 IF G>H THEN H=G
180 S=S+G
185 G$=" "
190 GOTO 80
200 P-S/N : M=L+ < < H-L > /2 >
210 PRINT" [OLEARI "
220 PRI NT" CI SONO " ; N; "URTI "
230 PRINT"! VALORI VANNO DR";L;" A";H
240 PRINT" IL VALORE CENTRALE E"". NI
250 PRI NT "LA NED IR E",P
260 PRINT
270 PRI NT "TOTALE PER OGNI CATEGORIA"
280 PRINT
290 PRI NT "A", A
300 PRINT"B",B
310 PRI NT" C'SC
320 PRI NT "D", B
330 prinT"F",F
410 PRINT "PREMI [ RVS 3 RETURN [ R'v'OFF 3 .PER C
ONTI NURRE"
420 INPUT K*
120
430 CLR
440 GOTO 10
121
Pubblicità’:
costo per unità di vendita
Il vostro quotidiano preferito possiede 11
miglior rapporto prezzo quantità' per 11
settore pubblicitario.
Un annuncio vi costa 330000 lire e vi frutta
la vendita di 77 prodotti.
Quanto e' stato 11 costo unitario?
La giusta risposta verrà' data da questo
breve programma.
10 PR I NT " [ CLERR ] "
28 INPUT "COSTO INSERZIONE"; A
30 I NPUT " UN 1 Tfi •" VENDUTE " ; U
40 C-R/U
45 PRINT
50 PR I NT " Lfì PUBBLICITÀ" COSTA £ ",C
55 PRINT "PER UNITA" VENDUTA"
58 POR P~1 TU 9 '■ PRINT ' NENT
60 CLR
70 GOTO 20
122
Statistiche in base 1 000
Supponete che la vostra radio locale affermi
di raccogliere 51000 ascoltatori per ogni
133000 lire di spese plubbicitarie e che
l'amminastratore di un quotidiano sostenga
che il costo di un inserzione sia di 330000
lire per ogni 1000 lettori.
Il seguente programma fornisce i valori
necessari per stabilire quale delle due
pubblicità' aia piu' reddittizia, valutando
la percentuale in base mille.
1@ PR I NT "C CLERI?]"
20 INPUT "COSTO INSERZIONE" ;fl
30 I NPUT " C I RCOLfìZ I OHE " ; C
40 M= 1 000* ( Fi/C >
45 PRINT
50 PRINT"£" ; M
55 PRINT "COSTO PER MILLE"
60 POR Q= 1 TO 10= PRINT : NEXTQ
70 GOTO 20
123
* ★
7. Sorpresa
* *
10 POKE 53272,21
11 POKE 53280, 1
12 POKE 53281,1
13 PRINTCHR$<14>
14 PRINT"[CLERRHGRIGIQ2H5 DOWN] 1
-ri -*\\* -*l rv*-%r"
15 PRINT"[2 DOWN] T~- ri /\ \“» *
//T "
16 CLR
17 DIM M$<24)
18 T0=TI
19 PRINT"[2 DOWN ] [ NERO ] -s NTRODUC I L'tNNQ <4
DIGIT ES. 1984) "
20 INPUT "[DOWN] [VIOLA] G
21 INPUT "[2 DOWN] [NERO]NESE <1-12) [VIOL
R]";M
22 IF GC1900 THEN 29
23 D«< G-l 900) #365
24 FOR Q*1901 TO G-l
25 : IF Q/4*INT<Q/4) THEN D=D+1
26 NEXT
27 D*D+2
28 GOTO 37
29 PRINT "[CLERR]"
30 D*G#365
31 FOR Q*1 TO G-l
124
32 ; IF Q/400- I NT < Q/400 ) THEN 34
33 : IF O/lOO-INTCG/lOO) THEN 35
34 : IF Q/4*INT(Q/4) THEN D*D+1
35 NEXT
36 D*D+1
37 PR I NT" C CLEAR H 6 DOWN] CI 1 RIGHT] [GIALLO]
I -, A_-,t/T H
38 FOR J=1 TO 24
39 : READ M$< J)
40 NEXT
41 FOR J=1 TO 7
42 : READ DfCJ)
43 NEXT
44 PRINTn$C2WM) TAB<35)G
45 PRINT" [DOWN] "
46 FOR J=1 TO 7
47 = PRINT TAB<6#<J>-6>D$<J>; " "J
48 NEXT
49 IF G/400* I NT < G/400 > THEN 51
50 IF G/100=INT (G/100) THEN 52
51 IF G/4=INT<G/4) THEN M#<4>="29"
52 FOR J=2 TO 2#M-2 STEP 2
53 :S1*S1+VAL<I1$<J>)
54 NEXT
55 IF M=1 THEN S1=0
56 S=S1+D-7#INT<<81+DV7>
57 V=VRL<M$<2#M>>
58 S=S+7
59 IF S>7 THEN 8=8-7
60 T=1+6*KS-1>
61 U=5
62 PRINT
63 PRINT. TAB<T«1>;
64 IF T«37 THEN 67
65 FOR D=1 TO V
66 : GOTO 69
125
67 SPRINT 1
68 FOR D*2 TO V
69 : IF POSC0X5 THEN PRI NT "CROSSO 3";
70 : IF POS<0»5 THEN PRINT" CBLEU3".
71 : IF POS<0)>35 THEN PR I NT " C VERDE 3 " »
72 : PR I NTD ; SPC < U-LEN < STR$ < D ) ) > ;
73 : IF POS<0)>34 THEN U*3
74 : IF POS <0X34 THEN U*5
75 NEXT
76 PRINT
77 INPUT "C2 DOWN 3 C NERO ] ♦NCORfl ";K$
78 IF LEFT$<K$, 1>«"S" THEN 16
79 IF LEFT$<K*.1>»"N" THEN PRINTCHR$< 142) :
END
80 GOTO 76
81 DRTfi "CNER03I ENNAIOCNERQ3",3l. H [GRIGIO
1 3 -EBBRA 1 0 C NERO 3 % 28 , " C VERDE2 3 NARZO C NER
0 3 % 3 1 , H C VERDE 3 f PR I LE C NERO 3 " , 30
82 DRTfi " C RZZUR 3 NfiGG 1 0 C NERO 3 " . 3 1 . " C V I OLR 3
1 I UGNO [NERO 3" , 30. " C ROSSO 3 LUGL 1 0 C NERO 3 " ,
31
83 DATA H C ROSA 3 «UGUSTO C NERO 3 " . 31 . " C ARANO 3
SETTEMBRE C NERO 3 " . 30 . " C MARR 3 fTTOBRE C NERO
•j ii ^ 3 1
84 DATA " COR I G 1 02 3 /ÌDVEMBRE C NERO 3 " . 30 . " C NE
RO 3 ~I CEMBRE C NERO 3 " . 3 1
85 DATA "CR0SS03‘*0M ,, . M CGRIGI013LUN"."^R M
, " NER ' V I 1 0 ’ V XEN " . " C VERDE 3 #AB " , " “OH "
126
LIBRI DI SYSTEM - libro mensile di Commodore Computer Club - Edizioni System Editoriale
s.r.l. - v.le Famagosta, 75 - 20142 Milano - Tel. 02/8467348 - Dir. responsabile: Michele di Pisa -
Reg. Trib. di Milano n. 370/82 - Sped. Abb. post. gr. 111/70 - Stampa: Lito 3 - Cologno Monzese.
E
E
S
£